Verilog来自stdin,但没有阻塞

时间:2014-06-14 06:18:38

标签: stdin verilog

在verilog中,我使用$fgets(xxx,'h8000_0000),以便xxx从stdin获取字符串。但它使用阻塞方式,如果我不按回车键,它将不会同时运行其他人。如何使用一种简单的方法从stdin获取字符串并且它是非阻塞的?

1 个答案:

答案 0 :(得分:1)

我原以为如果下面的代码依赖于输入字符串,那么你会希望它被阻塞。

从问题的描述中我不认为它是阻塞的,非阻塞的分配问题,而不是并行代码执行的问题。

如果代码被分成单独的always或initial块,那么它们将并行执行。

// 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