0
在Verilog中,我使用$fgets(xxx,'h8000_0000)
,以便xxx
從stdin獲取字符串。但它使用阻止方式,如果我不按Enter鍵,它不會同時運行其他人。如何使用簡單的方法從stdin獲取字符串並且它是非阻塞的?來自stdin但不阻塞的Verilog fgets
在Verilog中,我使用$fgets(xxx,'h8000_0000)
,以便xxx
從stdin獲取字符串。但它使用阻止方式,如果我不按Enter鍵,它不會同時運行其他人。如何使用簡單的方法從stdin獲取字符串並且它是非阻塞的?來自stdin但不阻塞的Verilog fgets
我會想如果下面的代碼依賴於輸入字符串,那麼你會希望它被阻止。
從問題的描述我不認爲這是一個阻塞,非阻塞分配問題,而不是並行代碼執行。
如果代碼被拆分成單獨的總是或初始塊,那麼它們將並行執行。
// main test program
initial begin
// ...
end
// load from command line with out halting main program
initial begin
$fgets(xxx,'h8000_0000);
end
另一種解決辦法是把超時fgets
左右,但提到的時間是對Verilog仿真時間而不是實際時間,可能必須使用相當大的價值,使之成爲明顯的延遲給用戶。
initial begin
//test program
// load from command line
fork : wait_or_timeout
begin
#10ms ;
disable wait_or_timeout;
end
begin
$fgets(xxx,'h8000_0000);
disable wait_or_timeout;
end
join