一般的なタイミング最適化方法は次のとおりです。
1:クリティカルパスがレジスターに挿入されます。
この問題は、コードの組み合わせロジックが多すぎる場合に発生しやすくなります
。2:ダブルビート
モジュール間のデータ相互作用にクロスクロックドメインが含まれる場合、通常、ダブルビートを使用できます。これは準安定を回避するための非常に便利な方法です
reg [7:0]data_reg1;
reg [7:0]data_reg2;
always@(posedge clk_50M or negedge rst_n)
if(!rst_n)
data_reg1 <= 8'b0;
else
data_reg1 <= data;
always@(posedge clk_50M or negedge rst_n)
if(!rst_n)
data_reg2 <= 8'b0;
else
data_reg2 <= data_reg1;
3:1つのモジュールで複数のモジュールを駆動することは避けてください。
これはモジュール設計のフレームワークから考慮されます。1つのモジュールを使用して複数のモジュールを駆動する場合は、このモジュールを複数回インスタンス化して消費を増やすことを検討できます。より良いタイミングと引き換えにハードウェアリソース