rahuljn 5 Report post Posted April 14, 2015 Hi Guys,I am a bit confused on the primitive and hierarchical channelIn primitive channels we have request-update/update but not in hierarchical channel.Is it mandatory to have request-update/update for primitive channels ? Why ?Why it is not needed for hierarchical channel ThanksRahulJn Quote Share this post Link to post Share on other sites
apfitch 205 Report post Posted April 14, 2015 A channel is simply a class that implements a SystemC interface. A primitive channel implements an interface and is derived from from sc_prim_channel, and can thus have access to the scheduler (evaluate update). A hierarchical channel implements an interface and is derived from sc_module, and can thus have all the features of an sc_module (processes, hierarchy etc). There'd be no point in deriving from sc_prim_channel and then not implementing the update/request-update behaviour. If you want a channel that is not a primitive channel, and is not a hierarchical channel, you would typically implement an interface but derive from sc_object. regards Alan P.S. To answer your questions more specifically - request_update and update are not pure virtual, so you could ignore them. Though why would you ignore them? If you don't want them, derive from sc_object instead. A hierarchical channel is derived from sc_module. sc_module does not have request_update/update, so you can't use them. 2 Mstones and amitk3553 reacted to this Quote Share this post Link to post Share on other sites
David Black 154 Report post Posted April 16, 2015 It is worth noting that a hierarchical channel is really just an sc_module that implements an sc_interface. It's purpose is for creating complex abstract channels (e.g. PCIe or AXI). Primitive channels are for smaller (primitive) transfers such as wires (i.e. sc_signal<>). 1 amitk3553 reacted to this Quote Share this post Link to post Share on other sites