Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
language:langs:refine [2022/06/23 19:35] rajit created |
language:langs:refine [2022/09/16 08:57] (current) rajit |
||
---|---|---|---|
Line 9: | Line 9: | ||
</ | </ | ||
- | This is used to provide an implementation of a process that replaces the CHP, dataflow, HSE, or PRS body. | + | This is used to provide an implementation of a process that replaces the CHP, dataflow, HSE, or PRS body. For example, imagine you had a process defined at the CHP level |
+ | <code act> | ||
+ | defproc example (...) | ||
+ | { | ||
+ | int x; | ||
+ | chp { | ||
+ | *[ L?x; R!x ] | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | You can include its production-rule level description in the same process definition, as follows: | ||
+ | |||
+ | <code act> | ||
+ | defproc example (...) | ||
+ | { | ||
+ | ... | ||
+ | chp { | ||
+ | *[ L?x; R!x ] | ||
+ | } | ||
+ | prs { | ||
+ | // circuit goes here | ||
+ | } | ||
+ | | ||
+ | </ | ||
+ | At this point, a tool can select the level of abstraction/ | ||
+ | |||
+ | Now imagine that instead of writing the production rules directly, you'd like to instantiate a set of gates to implement the circuit. Suppose we write the following: | ||
+ | <code act> | ||
+ | defproc example(...) | ||
+ | { | ||
+ | ... | ||
+ | chp { | ||
+ | *[ L?x; R!x ] | ||
+ | } | ||
+ | inst1 i1; | ||
+ | inst2 i2; | ||
+ | // the other instances and connctions... | ||
+ | } | ||
+ | </ | ||
+ | As written, this means that the process has a CHP definition, and //in addition// it has the specified instances! This is not what we intended to specify; we'd like to use the CHP definition //or// the instances. | ||
+ | |||
+ | To provide support for this, the '' | ||
+ | <code act> | ||
+ | defproc example(...) | ||
+ | { | ||
+ | ... | ||
+ | chp { | ||
+ | *[ L?x; R!x ] | ||
+ | } | ||
+ | refine { | ||
+ | inst1 i1; | ||
+ | inst2 i2; | ||
+ | // the other instances and connctions... | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | Now you can //pick// the refined version of the process by using the ACT command-line option '' | ||
+ | |||
+ | This approach is used in the '' |