Decentralized Control
- Kathryn relaxes the logic component update declaration. To manage the priority and condition of the update value, traditional Hardware description languages (HDLs) and even other frameworks have to route/reference the source signals and control signals from various source modules and centrally build dedicated update logic.
-
Kathryn proposes a hint function to indicate the assignment's priority, so designers do not have to duplicate or route the control signal to the target module.
-
For instance, theFigure below exemplifies the decentralization usage in Kathryn. At lines 4-6 in Figure below, the assignment “<<=”, covered by “SET_ASM_PRI_TO_MANUAL(11)”, and “ SET_ASM_PRI_TO_AUTO();” will be prioritized.
-
The assignment at line 5 to value 11, if other modules try to drive the signal with a lower priority than 11 at the same cycle that this module tries to drive, Kathryn will skip that source signal.
-
Importantly, the target register will be driven when the “zync” block is eligible to execute; it means that designers do not have to route the control activation signal to the unified control logic for each hardware component. Designers can then focus only on the flow and functional logic.
-
pip(decode){ zync(dispatch){ SET_ASM_PRI_TO_MANUAL(11); targetReg <= srcData1; SET_ASM_PRI_TO_AUTO(); } } -
In Kathryn, there are five standard priority values in the system, as shown in table below.
-
Type Value Description DEFAULT_UE_PRI_USER 10 Standard User priority DEFAULT_UE_PRI_INTERNAL_MAX 100 Used by internal node, automatically generated by Kathryn DEFAULT_UE_PRI_INTERNAL_MIN 50 Used by internal node, automatically generated by Kathryn DEFAULT_UE_PRI_RST INT32_MAX Used Kathryn global reset event DEFAULT_UE_PRI_MIN 0 Minimum for default logic component in idle state