Line 104... |
Line 104... |
assign dynamic_addr_hit_p = (q4un_p | q3un_p | q2un_p | q1un_p | q0un_p)
|
assign dynamic_addr_hit_p = (q4un_p | q3un_p | q2un_p | q1un_p | q0un_p)
|
& (b0un_p | b5un_p) & (q4t_p | q3t_p | q2t_p | q1t_p | q0t_p);
|
& (b0un_p | b5un_p) & (q4t_p | q3t_p | q2t_p | q1t_p | q0t_p);
|
|
|
// Test address register validity
|
// Test address register validity
|
// Test address == 0xxx or == 1xxx or == 800[0..3]
|
// Test address == 0xxx or == 1xxx or == 800[0..3]
|
// Sample at d9:ap
|
|
assign inv1_p = (addr_th[2] | addr_th[4]) | (addr_th[3] & addr_th[1])
|
assign inv1_p = (addr_th[2] | addr_th[4]) | (addr_th[3] & addr_th[1])
|
| (addr_th[6] & addr_th[0]) | (addr_th[5] & addr_th[0]); // 0xxx or 1xxx or 8xxx
|
| (addr_th[6] & addr_th[0]) | (addr_th[5] & addr_th[0]); // 0xxx or 1xxx or 8xxx
|
assign inv2_p = (addr_th[3] & addr_th[0]) & ~(addr_h[1] & addr_h[6]); // 80xx
|
assign inv2_p = (addr_th[3] & addr_th[0]) & ~(addr_h[1] & addr_h[6]); // 80xx
|
assign inv3_p = (addr_th[3] & addr_th[0]) & ~(addr_t[1] & addr_t[6]); // 8x0x
|
assign inv3_p = (addr_th[3] & addr_th[0]) & ~(addr_t[1] & addr_t[6]); // 8x0x
|
assign inv4_p = (addr_th[3] & addr_th[0]) & (addr_u[0] | addr_u[2]); // 8xx[0..3]
|
assign inv4_p = (addr_th[3] & addr_th[0]) & (addr_u[0] | addr_u[2]); // 8xx[0..3]
|
assign invalid_addr_p = inv1_p | inv2_p | inv3_p | inv4_p;
|
assign invalid_addr_p = inv1_p | inv2_p | inv3_p | inv4_p;
|
|
|
// Decode 8xxx addresses
|
// Decode 8xxx addresses
|
assign addr_8xxx_p = (addr_th[`biq_b5] & addr_th[`biq_q3]);
|
assign addr_8xxx_p = (addr_th[`biq_b5] & addr_th[`biq_q3]);
|
assign addr_8xx0_p = addr_8xxx_p & addr_u[6];
|
assign addr_8xx0_p = addr_8xxx_p & addr_u[`biq_q0];
|
assign addr_8xx1_p = addr_8xxx_p & addr_u[5];
|
assign addr_8xx1_p = addr_8xxx_p & addr_u[`biq_q1];
|
assign addr_8xx2_p = addr_8xxx_p & addr_u[4];
|
assign addr_8xx2_p = addr_8xxx_p & addr_u[`biq_q2];
|
assign addr_8xx3_p = addr_8xxx_p & addr_u[3];
|
assign addr_8xx3_p = addr_8xxx_p & addr_u[`biq_q3];
|
|
|
// Memory access error
|
// Memory access error
|
assign mem_error_p = double_write | ((bs_to_gs | ri_gs) & ~dx & no_write);
|
assign mem_error_p = double_write | ((bs_to_gs | ri_gs) & ~dx & no_write);
|
|
|
always @(posedge ap)
|
always @(posedge ap)
|