HDL (Hardware description Language) es el tipo de lenguaje utilizado, Verilog/VHDL frente a un javascript no HDL.
RTL (Register-transfer level) es un nivel de abstracción en el que se escribe. Los tres niveles a los que me refiero son Behavioural, RTL, Gate-level.
Comportamiento tiene la capa más alta de abstracción que describe el comportamiento global y a menudo no es sintetizable, pero es útil para la verificación.
RTL describe el hardware que se desea mediante la lógica. define los flip-flops, los latches y cómo se transfieren los datos entre ellos. Esto es sintetizable, la síntesis puede alterar/optimizar la lógica utilizada pero no el comportamiento. Conmutación de muxes para puertas, etc., algunas veces invirtiendo las señales para optimizar el diseño.
Verilog RTL que implica un flip-flop:
logic a; //logic is SystemVerilog, could be a 'reg'
logic k; // Driven by RTL not shown
always @(posedge clk or negede rst_n) begin
if (~rst_n) begin
a <= 'b0 ;
end
else begin
a <= k ;
end
end
Operadores combinatorios a base de bits :
logic [1:0] n;
logic [1:0] m;
logic [1:0] result;
assign result = n & m ;
Nivel de la puerta es un diseño que utiliza las puertas lógicas básicas (NAND, NOR, AND, OR, MUX, FLIP-FLOP). No necesita ser sintetizado o es el resultado de la síntesis. Es el nivel más bajo de abstracción. Son las puertas lógicas que se utilizarán en el chip, pero carece de información posicional.
Nivel de puerta Verilog (misma función que la anterior):
wire a;
wire k;
DFFRX1 dffrx1_i0 (
.Q (a), //Output
.QN( ), //Inverted output not used
.D (k), //Input
.CK(clk), //Clk
.RN(rst_n)// Active Low Async Reset
);
Combinatoria
wire [1:0] n;
wire [1:0] m;
wire [1:0] result;
AND2X1 and2x1_i0 (
.Y( result[0]),
.A( n[0] ),
.B( m[0] )
);
AND2X1 and2x1_i1 (
.Y( result[1]),
.A( n[1] ),
.B( m[1] )
);