在后仿时遇到一个很有意思的问题:0时刻sram_ecc_error_m_level初始化为1,aclk时钟没有打开,areset_n=0;100ns时,areset_n=1,复位释放,但是aclk时钟依旧没有打开,那么sram_ecc_error_m_level的值在0-100ns之间值是多少,100ns以后值是多少呢?如果是实际器件呢?
实际仿真时发现:rtl的逻辑,只有等到时钟上升沿或者复位下降沿才会更新sram_ecc_error_m_level的值,因此,sram_ecc_error_m_level的值会一直保持1,并不会更新。
而实际器件则不同,实际带异步复位的D触发器电路图如下图所示,rst为电平有效而不是沿有效。因此,如果是器件,那么sram_ecc_error_m_level的值将在0时刻后更新为0,100ns时虽然复位释放了,但是没有始终,也没有其他驱动,sram_ecc_error_m_level的值将继续保持为0。