`timescale 1ns/1ps //==================================================== //Author : pwy //Date : 2024-04-04 //Des : async set & sync release management unit //==================================================== module rst_gen_unit( //ext hardware async reset -- low active input async_rstn_i //power-on reset -- low active ,input por_rstn_i //sys soft reset -- low active ,input sys_soft_resetn_i //ch0 soft reset -- low active ,input ch0_soft_rstn_i //ch1 soft reset -- low active ,input ch1_soft_rstn_i //ch2 soft reset -- low active ,input ch2_soft_rstn_i //ch3 soft reset -- low active ,input ch3_soft_rstn_i //clock ,input clk //reset output -- low active ,output ch0_rstn_o ,output ch1_rstn_o ,output ch2_rstn_o ,output ch3_rstn_o //Phase-locked loop reset -- low active ,output pll_rstn_o ); //ch0 reset --> async_rstn_i & por_rstn_i & sys_soft_resetn_i & ch0_soft_rstn_i rst_sync ch0_rstn_sync ( .clk_d ( clk ) ,.async_rstn ( async_rstn_i & por_rstn_i & sys_soft_resetn_i & ch0_soft_rstn_i ) ,.sync_rstn ( ch0_rstn_o ) ); //ch1 reset --> async_rstn_i & por_rstn_i & sys_soft_resetn_i & ch1_soft_rstn_i rst_sync ch1_rstn_sync ( .clk_d ( clk ) ,.async_rstn ( async_rstn_i & por_rstn_i & sys_soft_resetn_i & ch1_soft_rstn_i ) ,.sync_rstn ( ch1_rstn_o ) ); //ch2 reset --> async_rstn_i & por_rstn_i & sys_soft_resetn_i & ch2_soft_rstn_i rst_sync ch2_rstn_sync ( .clk_d ( clk ) ,.async_rstn ( async_rstn_i & por_rstn_i & sys_soft_resetn_i & ch2_soft_rstn_i ) ,.sync_rstn ( ch2_rstn_o ) ); //ch3 reset --> async_rstn_i & por_rstn_i & sys_soft_resetn_i & ch3_soft_rstn_i rst_sync ch3_rstn_sync ( .clk_d ( clk ) ,.async_rstn ( async_rstn_i & por_rstn_i & sys_soft_resetn_i & ch3_soft_rstn_i ) ,.sync_rstn ( ch3_rstn_o ) ); //Phase-locked loop reset -- low active assign pll_rstn_o = async_rstn_i & por_rstn_i; endmodule