Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> Verilog

Verilog Tijdschaalbereik

Standaard tijdschaal

Hoewel wordt verwacht dat Verilog-modules een tijdschaal hebben die vóór de module is gedefinieerd, kunnen simulators een standaardtijdschaal invoegen. De werkelijke tijdschaal die wordt toegepast op elk bereik in een door Verilog uitgewerkte hiërarchie kan worden afgedrukt met behulp van de systeemtaak $printtimescale die het bereik als argument accepteert.

  
  
module tb;
	initial begin
		// Print timescale of this module
		$printtimescale(tb);
		// $printtimescale($root);
	end
endmodule

  

Zie dat hoewel er geen tijdschaalrichtlijn voor deze module is geplaatst, de simulator uiteindelijk een tijdschaalwaarde van 1ns/1ns toepast.

Simulatielogboek
xcelium> run
Time scale of (tb) is  1ns /  1ns
xmsim: *W,RNQUIE: Simulation is complete.

Standaard tijdschaalbereik

Standaard wordt een tijdschaalrichtlijn die in een bestand is geplaatst, toegepast op alle modules die de richtlijn volgen tot de definitie van een andere tijdschaalrichtlijn.

  
  
`timescale 1ns/1ps

module tb;
  des m_des();
  alu m_alu();
  
  initial begin
    $printtimescale(tb);
    $printtimescale(tb.m_alu);
	$printtimescale(tb.m_des);
  end
endmodule

module alu;
  
endmodule

`timescale 1ns/10ps

module des;
  
endmodule

  

In het bovenstaande voorbeeld krijgen tb en alu een tijdschaal van 1ns/1ns, terwijl des een tijdschaal van 1ns/10ps krijgt vanwege de plaatsing van de richtlijn voor de moduledefinitie van des

Simulatielogboek
xcelium> run
Time scale of (tb) is  1ns /  1ps
Time scale of (tb.m_alu) is  1ns /  1ps
Time scale of (tb.m_des) is  1ns /  10ps
xmsim: *W,RNQUIE: Simulation is complete.

Omvang tussen Verilog-bestanden

Andere bestanden kunnen in het huidige bestand worden opgenomen met een `include richtlijn die een pre-processorrichtlijn is en ervoor zorgt dat de compiler de inhoud van het opgenomen bestand plaatst vóór de compilatie. Dit komt dus overeen met het simpelweg plakken van de volledige inhoud van het andere bestand in dit hoofdbestand.

  
  
// main.v
`timescale 1ns/1ps

module tb;
  des m_des();
  alu m_alu();
  
  initial begin
    $printtimescale(tb);
    $printtimescale(tb.m_alu);
	$printtimescale(tb.m_des);
  end
endmodule

`include "file_alu.v"
`include "file_des.v"

// file_alu.v
module alu;
endmodule

// file_des.v
`timescale 1ns/10ps

module des;
  
endmodule

  

Zie dat de resultaten precies hetzelfde zijn als in het vorige voorbeeld. alu krijgt een tijdschaal van 1ns/1ps omdat het de laatste richtlijn was die geldig bleef totdat de compiler de alu-definitie vond, ondanks het in een ander bestand te plaatsen. des krijgt een tijdschaal van 1ns/10ps omdat de richtlijn werd vervangen voordat deze werd gedefinieerd.

Simulatielogboek
xcelium> run
Time scale of (tb) is  1ns /  1ps
Time scale of (tb.m_alu) is  1ns /  1ps
Time scale of (tb.m_des) is  1ns /  10ps
xmsim: *W,RNQUIE: Simulation is complete.

Het wisselen van bestanden kan de tijdschaal veranderen

Volgorde van opname van bestanden speelt een belangrijke rol bij het herdefiniëren van tijdschaalrichtlijnen, wat duidelijk wordt in het onderstaande voorbeeld.

  
  
// main.v
`timescale 1ns/1ps

module tb;
  des m_des();
  alu m_alu();
  
  initial begin
    $printtimescale(tb);
    $printtimescale(tb.m_alu);
	$printtimescale(tb.m_des);
  end
endmodule

// NOTE! Swapped order of inclusion
`include "file_des.v"
`include "file_alu.v"

// file_alu.v
module alu;
endmodule

// file_des.v
`timescale 1ns/10ps

module des;
  
endmodule

  

Zie dat de module alu nu een tijdschaal van 1ns/10ps krijgt.

Simulatielogboek
xcelium> run
Time scale of (tb) is  1ns /  1ps
Time scale of (tb.m_alu) is  1ns /  10ps
Time scale of (tb.m_des) is  1ns /  10ps
xmsim: *W,RNQUIE: Simulation is complete.

Dit is een van de redenen om een ​​tijdschaalrichtlijn bovenaan bestanden te hebben, zodat alle modules in dat bestand de juiste tijdschaal aannemen, ongeacht de bestandsopname.

Deze benadering kan het echter moeilijk maken om te compileren met een verschillende tijdschaalprecisie (waarde volgend op de schuine stand) zonder elk bestand te wijzigen. Veel compilers en simulators bieden ook een optie om standaard tijdschaalwaarden te negeren die op alle modules worden toegepast.


Verilog

  1. Verilog-zelfstudie
  2. Verilog-aaneenschakeling
  3. Verilog-opdrachten
  4. Verilog blokkeren en niet-blokkeren
  5. Verilog-functies
  6. Verilog-taak
  7. Verilog hiërarchisch referentiebereik
  8. Verilog-klokgenerator
  9. Verilog wiskundige functies
  10. Verilog Tijdnotatie
  11. Verilog File IO-bewerkingen