system-verilog

    3熱度

    2回答

    如果我所說的任務,並通過引用傳遞的事件,它不會被裏面的任務檢測到事件被觸發後: event e; fork test_ev(e); begin #1ms; ->e; end join ... task ev(ref event e); @(e) do_something; /

    0熱度

    2回答

    對於在EDA Playground中使用VCS中的DPI-C的以下代碼,我沒有得到正確的輸出。我期望6作爲答案,但我每次獲得248,而不考慮a和b的值。我已經嘗試在helloFromC.c中使用svLogic,int和unsigned char作爲a_int的數據類型。 module automatic test; import "DPI-C" function void helloF

    2熱度

    1回答

    在系統Verilog中是否有任何支持超過32位的系統函數?我想將實值數量轉換爲包含多於32位的整數值。 $ rtoi()系統函數正是我想要的值,可以表示爲32位或更少。有沒有內置的,或者我需要寫我自己的? 對於一個具體的例子,我想能夠做到像下面這樣: logic [41:0] test_value; initial begin test_value = $rtoi($pow(2.0,

    0熱度

    2回答

    嘗試實現數組的sum方法。將函數的返回值存儲到Integer中。爲什麼我得到的輸出是48而不是560? program test; class check2; logic [7:0] a [3:0] = '{10,20,30,500}; function void dis(); int unsigned ch; ch = a.sum()+16'd0; $di

    -4熱度

    1回答

    我有一個DUT可以接收來自所有4個相同接口(A,B,C,D)的數據包來自一個端口的數據包可以進入任一個輸出端口(1,2,3 ,4)。例如:來自A的分組可以進入1,2,3或4.來自端口B的分組可以進入1,2,3或4等等。來自同一端口的數據包是有序的,但數據包可以按照A,B,C,D之間的任意順序進行服務(由於所有4個接口在發送數據包的同時可以處於活動狀態,因此端口之間沒有訂單)。 如何驗證這樣的DUT

    0熱度

    1回答

    我無法理解,爲什麼我們更喜歡Mailbox over Queue進行進程間通信(例如:Driver和Scoreboard之間的通信)?

    0熱度

    1回答

    轉換2D陣列成3D陣列我有一個2 d動態陣列 logic [511:0] array[]; 我灣,將其轉換成被定義爲 logic [32][16]M[]; 例如3 d動態數組。 array[0]= 1110110000111000...512 bits.... M[0][0]= 1110110000111000...32 bits.... M[0][1]= nex

    0熱度

    1回答

    我想開發一個代碼,它像一個邏輯計算器一樣工作;我已經成功地編譯了代碼和測試平臺,沒有任何錯誤。下面是代碼: module AriLogCal( input logic [3:0] OpA, OpB, //Operands A and B. The two numbers we will operate on. input logic [2:0] DoOpt, /

    0熱度

    1回答

    我試圖在SystemVerilog中實現慣性延遲以生成符合以下條件的信號valid_inputs: 1.如果沒有輸入是X時,valid_inputs應該在延遲一段時間(比如15個單位)後變爲'1'/Z 2. valid_inputs應該立即 '0',如果ATLEAST一個輸入變爲X/Z 我想上面有2個實現: module test (a, b, y); input a, b;

    1熱度

    1回答

    我使用SystemVerilog的字符串化操作,`",在宏,如下面的例子是故意做作,顯示錯誤: module my_test(); `define print(x) $fwrite(log_file, `"x`") `define println(x) $fwrite(log_file, `"x\n`") integer log_file; initial