specparam t_ACS = 8; // Chip select access time
specparam t_CLZ = 2; // Chip select to output in low-z
// Parameters for the write cycle
specparam t_WC = 7; // Write cycle time
specparam t_CW = 5; // Chip select to end of write
specparam t_AW = 5; // Adress valid to end of write
//Module path timing specifications
(addr *> data) = t_AA; // Verified in simulation
(CS_b *> data) = (t_ACS, t_ACS, t_CHZ);
(OE_b *> data) = (t_OE, t_OE, t_OHZ); // Verified in simulation
//Timing checks (Note use of conditioned events for the address setup,
//depending on whether the write is controlled by the WE_b or by CS_b.
//Address setup before write enabled
$setup (addr, negedge WE_b &&& CS_b == 0, t_AS);
$setup (addr, negedge CS_b &&& WE_b == 0, t_AS);
//Width of write pulse
$width (negedge WE_b, t_WP);
//Data hold from end of write
$hold (data, posedge WE_b &&& CS_b == 0, t_DH);
$hold (data, posedge CS_b &&& WE_b == 0, t_DH);
//Chip sel to end of write
$setup (CS_b, posedge WE_b &&& CS_b == 0, t_CW);
$width (negedge CS_b &&& WE_b == 0, t_CW);