From: Cary R. <cy...@ya...> - 2009-06-18 22:06:03
|
--- On Thu, 6/18/09, Trevor Williams <pha...@gm...> wrote: > It appears that Icarus treats the $urandom( seed > ) like the $random( seed ) system call in that the provided > seed is treated as an inout -- the value is used to seed the > RNG and the function returns the new seed value back into > the provided variable. However, after seeing a discrepancy > between Icarus and VCS in this regard, I consulted some > online documentation which confirms that $urandom( seed ) > treats the seed parameter as an input only. $urandom is a > SystemVerilog built-in system call and SystemVerilog threads > keep track of their own random seed value; therefore, the > seed value does not need to be returned and, indeed, > isn't. Is there a reason why Icarus implements this > functionality differently than the SystemVerilog standard? > If so and there is no plan to change it, it should > definitely be documented as such in the wiki. This would > make any testbenches that use this functionality -- > originally developed for an Icarus platform -- to not work > as expected in a SystemVerilog compliant platform. > > Any thoughts? My thought is that I did not have enough documentation when I wrote the code and made it like $random. Given that neither Steve or myself have a copy of the SV standard things like this are bound to crop up. So, yes this is a bug and needs to be fixed, but I will need more information before I can actually figure out what needs to be done. Cary |