- 訊號不能用 in、out 或 inout 來聲明,訊號的傳輸方向取決於連接部分的連接埠狀態。
- 訊號常被用來連接模組和用於進程間通信,變數則用於進程和模組的本地儲存。
- 變數模擬的賦值是立刻發生的,沒有 delta 延遲;而訊號和連接埠的值刷新要經過一個 delta 延遲。
- 訊號應常被綜合為邏輯塊間的連線;變數常被綜合為邏輯塊,可以是組合或時序邏輯。
訊號和連接埠的關聯
關聯(Association)基本上等於連接(Connect),也成為了綁定(Bind)-
關聯分為位置關聯和名字關聯。
sc_signal<bool> a, b, f;
sc_clock clk("Clk", 20, SC_NS);
- 位置關聯:依照連接埠定義的順序一一對應
適合少量連接埠的模組,但在大量連接埠的模組中非常危險,因為可能不經意修改了連接埠順序
nand2 N2("Nand2");
N2.A(a);
N2.B(b);
N2.F(f);
tb tb1("tb");
tb1.clk(clk);
tb1.a(a);
tb1.b(b);
tb1.f(f);
- 名字關聯:依名字一一對應
對於大型的 SystemC 項目,一般建議統一使用名字關聯
nand2 N2("Nand2");
N2(a, b, f);
tb tb1("tb");
tb1(clk, a, b, f);
建構函數
使用 SC_CTOR 標識,建構函數的名字必須與模組的名字相同,用於初始化進程的類型並建立進程的敏感表。

沒有留言:
張貼留言