Dev Book
Modeling
Node

Node

  • Node is also part of Hybrid Design Flow (HDF). the node is atomic component which represent the state and its transition of the hardware model.
  • This session will introduce you how Kathryn's node system represent the state and type of node provided in this framework

How node represent From mathematics?

  • Group of nodes called graph (GG)

    • G={n1,n2,n3,...,nk}G = \{n_1, n_2, n_3, ..., n_k\}
    • (GG) is a set of nodes (nn) in Kathryn model.
  • Node is the representation of state and its transition of hardware flow

    • ni=(Ci,Di(Ci,t))n_i = (C_i, D_i(C_i, t))
    • (nin_i) is the ordered pair of node number ii. First element is the set of input trigger conditions. and second element is determine function
  • Conditional trigger is input meta-data for a node

    • Ci={(c,nj)nj ϵ G}C_i = \{ (c, n_j) | n_j\ \epsilon\ G \}
    • (CiC_i) is set of the ordered pair of nin_i where cc is logic value that can be interpreted as a boolean value and njn_j is a node that belongs to GG.
  • Determine function and logic interpretation

    • Di(Ci,t) ϵ {true,false}D_i(C_i, t)\ \epsilon\ \{true, false\}

    • B(c,t) ϵ {true,false}B(c, t)\ \epsilon\ \{true, false\}

    • (DiD_i) is the function to determine that node nin_i is activated and ready for next state transition at cycle number (tt). In fact, DiD_i will be modified for each specific type of the node (state) such as parallel block synchronization node, wait block node, and conditional node in conditional block.

    • (BB) is the function to determine the value of condition (cc) at cycle number (tt).

Node type in Kathryn

StateNode

  • src/model/flowBlock/abstract/nodes/stateNode.h
  • the node that will activate its status when for some dependent nodes is activate and its coresponding condition is true.
  • dst(C,t)={(c,n) ϵ C n[2](n[1],t1)  B(c,t1) = true}d_st(C, t) = \exists\{(c,n)\ \epsilon\ C|\ n[2](n[1], t-1)\ \wedge\ B(c, t-1)\ =\ true \}
Photo

SyncNode

  • src/model/flowBlock/abstract/nodes/stateNode.h
  • the node that will active its status when all dependent nodes is activate in any cycle in each iteration.
  • In case synNode mode: DYNAMICDYNAMIC (means flow block cannot determine some sub-block cycle usage at model formation time)
  • ddsync(C,t)=(c,n) ϵ C >t2<t, t3<t,t3>=t2{n[2](n[1],t2)  ddsync(C,t3)} d_{dsync}(C, t) = \forall(c,n)\ \epsilon\ C\ ->\exists t_2 < t ,\ \forall t_3 < t, t_3 >= t_2\{ n[2](n[1], t_2)\ \wedge\ \forall d_{dsync}(C, t_3)\}
Photo
  • In case synNode mode: STATICSTATIC (means flowblock can determine all sub-block cycle usage at model formation time)
  • let the logest execution node is node (S)(S)
  • dssync(C,t)={(c,n) =S n[2](n[1],t1)  n[2](n[1],t)}d_{ssync}(C, t) = \exists\{(c,n)\ = S|\ n[2](n[1], t-1)\ \lor \ n[2](n[1], t) \}
Photo

Timming Node

  • src/model/flowBlock/abstract/nodes/waitNode.h
  • In case, designers specify amount of wait cycle Cywait
  • the node that will activate its status when some dependent nodes is activate and wait for meet the specified cycle A.
  • dcyt(C,t)={(c,n) ϵ C n[2](n[1],tA1)  B(c,tA1) = true}d_cyt(C, t) = \exists\{(c,n)\ \epsilon\ C|\ n[2](n[1], t-A-1)\ \wedge\ B(c, t-A-1)\ =\ true \}
Photo
  • In case, designers specify condition for waiting CondWait
  • the node that will activate its status when some dependent nodes is activate and wait for meet the specified condition E.
  • dcdt(C,t)={(c,n) ϵ C, t2<t n[2](n[1],t2)  B(c,t2)  B(E,t)  t3>t2t3<t (!dcdt(C,t3))}d_{cdt}(C, t) = \exists\{(c,n)\ \epsilon\ C,\ t_2 < t|\ n[2](n[1], t_2)\ \wedge\ B(c, t_2)\ \wedge\ B(E, t)\ \wedge\ \forall t_3 > t_2 t_3 < t \ (!d_{cdt}(C, t3)) \}
Photo

Pseudo Node

  • src/model/flowBlock/abstract/nodes/logicNode.h
  • Pseudo node does not represent state like previous node but it play an important role while Kathryn is formating model.
  • For instance, some flow graph that have cycling state flow (node1 -> node2 -> node3 -> node1), some time node3 require logic pre-process first; therefore node1 cannot build logic related to node3 directly. The Pseudo node aim to be the proxy node that prevent dead lock in this situation.
  • Futhermore, Pseudo Node can act as node aggregator. Sometime when controll require single node to represent several flow blocks, Pseudo then can handle this by aggreate source inputs to single output
  • let Op(C, t) be the operating function that operates source node condition and node values at cycle t.
  • dpsd(C,t) = Op(C,t)d_{psd}(C, t)\ =\ Op(C, t)
Photo

Dummy Node

  • src/model/flowBlock/abstract/nodes/logicNode.h
  • Dummy node does not represent state, it is used to hardware to siggle bit value
  • ddm(C,t) ϵ {0,1}d_{dm}(C, t)\ \epsilon\ \{0, 1\}

Opr Node

  • src/model/flowBlock/abstract/nodes/logicNode.h
  • Dummy node does not represent state, it is used to represent reset or interrupt signal
  • let S be some operand to reset or interrupt
  • dopr(C,t)=B(S!=0,t)d_{opr}(C, t) = B(S != 0, t)