[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: gEDA: synthesizable Verilog style
I'm resending as HTML -because the format just got killed by conversion
to text.
Steve
Steve Wilson wrote:
>
> Larry - I would reformat it slightly for readability:
>
> always @(posedge clk40 or negedge rstn) if (~rstn) begin
> trace1_data <= 0;
> trace2_data <= 0;
> trace3_data <= 0;
> countl <= 0;
> counth <= 0;
> address_at_pulse_end <= 0;
> end else begin
> trace1_data <= trace1_sel[0] ? ddls : dals ; // Ref or Fwd
> trace2_data <= trace2_sel[0] ? outm : dbls ; // Out or Rfl
> trace3_data <= trace3_sel[0] ? outm : dcls ; // Out or Cav
> countl <= (carry | ~trace_enable) ? 0 : (countl + 1'b1);
> counth <= trace_enable ? (carry ? (counth + 1'b1) : counth) : 0;
> //Concerning normal synth style
> //if (trace_enable) address_at_pulse_end <= {5'b00000,
> trace_address};
> //I would nominally pull this into a separage always block
> because of
> //the conditional load. I might also rewrite it as below
> //if it were to remain as part of the block.
> //Larry - this is all cosmetic stuff I'm suggesting....
> address_at_pulse_end <= trace_enable ? {5'b00000, trace_address}:
> address_at_pulse_end ;
>
> end
>
>>
>> Is this good form? Is it within the bounds that Icarus is on track to
>> synthesize on or about v0.8? Is "~rstn" or "!rstn" better?
>
> ~rstn is just a generally safer construct. Assuming rstn is a single
> bit - !rstn will work.
>
>> Does the
>> "negedge rstn" make sense? How does Icarus pick the global reset net?
>>
> You "might" have an issue with the flops that the FPGA likes - if it
> only implements positive logic resets - then this
> costs you. Depends on what they like. In some ASIC libs- this would
> be a bad idea cause they don't have active low resets.
>
>>
>> Possibly related, how does Xilinx's usage of glbl.GSR relate to all
>> of this?
>> See line 69 of RAMB4_S?_S?.v . All it seems to do on Icarus with
>> -Wall is
>> generate one
>> xilinx/RAMB4_S8_S8.v:69: warning: implicit definition of wire
>> history2e.trace1.trace1.b0.glbl.
>> message per instantiation. I know, this module is for simulation, not
>> synthesis. But I'd expect the semantics to be somehow equivalent.
>>
>> - Larry
>>
>>
>>
>
>
>
>