Commit 9c36c48f authored by Andrey Filippov's avatar Andrey Filippov

debugging with the driver

parent 5cfb1ff4
...@@ -52,87 +52,87 @@ ...@@ -52,87 +52,87 @@
<link> <link>
<name>vivado_logs/VivadoBitstream.log</name> <name>vivado_logs/VivadoBitstream.log</name>
<type>1</type> <type>1</type>
<location>/home/andrey/git/x393_sata/vivado_logs/VivadoBitstream-20160217173341424.log</location> <location>/home/andrey/git/x393_sata/vivado_logs/VivadoBitstream-20160222133823984.log</location>
</link> </link>
<link> <link>
<name>vivado_logs/VivadoOpt.log</name> <name>vivado_logs/VivadoOpt.log</name>
<type>1</type> <type>1</type>
<location>/home/andrey/git/x393_sata/vivado_logs/VivadoOpt-20160217173341424.log</location> <location>/home/andrey/git/x393_sata/vivado_logs/VivadoOpt-20160222133823984.log</location>
</link> </link>
<link> <link>
<name>vivado_logs/VivadoOptPhys.log</name> <name>vivado_logs/VivadoOptPhys.log</name>
<type>1</type> <type>1</type>
<location>/home/andrey/git/x393_sata/vivado_logs/VivadoOptPhys-20160217173341424.log</location> <location>/home/andrey/git/x393_sata/vivado_logs/VivadoOptPhys-20160222133823984.log</location>
</link> </link>
<link> <link>
<name>vivado_logs/VivadoOptPower.log</name> <name>vivado_logs/VivadoOptPower.log</name>
<type>1</type> <type>1</type>
<location>/home/andrey/git/x393_sata/vivado_logs/VivadoOptPower-20160217173341424.log</location> <location>/home/andrey/git/x393_sata/vivado_logs/VivadoOptPower-20160222133823984.log</location>
</link> </link>
<link> <link>
<name>vivado_logs/VivadoPlace.log</name> <name>vivado_logs/VivadoPlace.log</name>
<type>1</type> <type>1</type>
<location>/home/andrey/git/x393_sata/vivado_logs/VivadoPlace-20160217173341424.log</location> <location>/home/andrey/git/x393_sata/vivado_logs/VivadoPlace-20160222133823984.log</location>
</link> </link>
<link> <link>
<name>vivado_logs/VivadoRoute.log</name> <name>vivado_logs/VivadoRoute.log</name>
<type>1</type> <type>1</type>
<location>/home/andrey/git/x393_sata/vivado_logs/VivadoRoute-20160217173341424.log</location> <location>/home/andrey/git/x393_sata/vivado_logs/VivadoRoute-20160222133823984.log</location>
</link> </link>
<link> <link>
<name>vivado_logs/VivadoSynthesis.log</name> <name>vivado_logs/VivadoSynthesis.log</name>
<type>1</type> <type>1</type>
<location>/home/andrey/git/x393_sata/vivado_logs/VivadoSynthesis-20160217173227982.log</location> <location>/home/andrey/git/x393_sata/vivado_logs/VivadoSynthesis-20160222133537458.log</location>
</link> </link>
<link> <link>
<name>vivado_logs/VivadoTimimgSummaryReportImplemented.log</name> <name>vivado_logs/VivadoTimimgSummaryReportImplemented.log</name>
<type>1</type> <type>1</type>
<location>/home/andrey/git/x393_sata/vivado_logs/VivadoTimimgSummaryReportImplemented-20160217173341424.log</location> <location>/home/andrey/git/x393_sata/vivado_logs/VivadoTimimgSummaryReportImplemented-20160222133823984.log</location>
</link> </link>
<link> <link>
<name>vivado_logs/VivadoTimimgSummaryReportSynthesis.log</name> <name>vivado_logs/VivadoTimimgSummaryReportSynthesis.log</name>
<type>1</type> <type>1</type>
<location>/home/andrey/git/x393_sata/vivado_logs/VivadoTimimgSummaryReportSynthesis-20160217173227982.log</location> <location>/home/andrey/git/x393_sata/vivado_logs/VivadoTimimgSummaryReportSynthesis-20160222133537458.log</location>
</link> </link>
<link> <link>
<name>vivado_logs/VivadoTimingReportImplemented.log</name> <name>vivado_logs/VivadoTimingReportImplemented.log</name>
<type>1</type> <type>1</type>
<location>/home/andrey/git/x393_sata/vivado_logs/VivadoTimingReportImplemented-20160217173341424.log</location> <location>/home/andrey/git/x393_sata/vivado_logs/VivadoTimingReportImplemented-20160222133823984.log</location>
</link> </link>
<link> <link>
<name>vivado_logs/VivadoTimingReportSynthesis.log</name> <name>vivado_logs/VivadoTimingReportSynthesis.log</name>
<type>1</type> <type>1</type>
<location>/home/andrey/git/x393_sata/vivado_logs/VivadoTimingReportSynthesis-20160217173227982.log</location> <location>/home/andrey/git/x393_sata/vivado_logs/VivadoTimingReportSynthesis-20160222133537458.log</location>
</link> </link>
<link> <link>
<name>vivado_state/x393_sata-opt-phys.dcp</name> <name>vivado_state/x393_sata-opt-phys.dcp</name>
<type>1</type> <type>1</type>
<location>/home/andrey/git/x393_sata/vivado_state/x393_sata-opt-phys-20160217173341424.dcp</location> <location>/home/andrey/git/x393_sata/vivado_state/x393_sata-opt-phys-20160222133823984.dcp</location>
</link> </link>
<link> <link>
<name>vivado_state/x393_sata-opt-power.dcp</name> <name>vivado_state/x393_sata-opt-power.dcp</name>
<type>1</type> <type>1</type>
<location>/home/andrey/git/x393_sata/vivado_state/x393_sata-opt-power-20160217173341424.dcp</location> <location>/home/andrey/git/x393_sata/vivado_state/x393_sata-opt-power-20160222133823984.dcp</location>
</link> </link>
<link> <link>
<name>vivado_state/x393_sata-opt.dcp</name> <name>vivado_state/x393_sata-opt.dcp</name>
<type>1</type> <type>1</type>
<location>/home/andrey/git/x393_sata/vivado_state/x393_sata-opt-20160217173341424.dcp</location> <location>/home/andrey/git/x393_sata/vivado_state/x393_sata-opt-20160222133823984.dcp</location>
</link> </link>
<link> <link>
<name>vivado_state/x393_sata-place.dcp</name> <name>vivado_state/x393_sata-place.dcp</name>
<type>1</type> <type>1</type>
<location>/home/andrey/git/x393_sata/vivado_state/x393_sata-place-20160217173341424.dcp</location> <location>/home/andrey/git/x393_sata/vivado_state/x393_sata-place-20160222133823984.dcp</location>
</link> </link>
<link> <link>
<name>vivado_state/x393_sata-route.dcp</name> <name>vivado_state/x393_sata-route.dcp</name>
<type>1</type> <type>1</type>
<location>/home/andrey/git/x393_sata/vivado_state/x393_sata-route-20160217173341424.dcp</location> <location>/home/andrey/git/x393_sata/vivado_state/x393_sata-route-20160222133823984.dcp</location>
</link> </link>
<link> <link>
<name>vivado_state/x393_sata-synth.dcp</name> <name>vivado_state/x393_sata-synth.dcp</name>
<type>1</type> <type>1</type>
<location>/home/andrey/git/x393_sata/vivado_state/x393_sata-synth-20160217173227982.dcp</location> <location>/home/andrey/git/x393_sata/vivado_state/x393_sata-synth-20160222133537458.dcp</location>
</link> </link>
</linkedResources> </linkedResources>
</projectDescription> </projectDescription>
...@@ -53,6 +53,7 @@ module ahci_ctrl_stat #( ...@@ -53,6 +53,7 @@ module ahci_ctrl_stat #(
input update_serr, input update_serr,
input update_pcmd, input update_pcmd,
input update_pci, input update_pci,
input update_ghc,
/// output reg st01_pending, // software turned PxCMD.ST from 0 to 1 /// output reg st01_pending, // software turned PxCMD.ST from 0 to 1
/// output reg st10_pending, // software turned PxCMD.ST from 1 to 0 /// output reg st10_pending, // software turned PxCMD.ST from 1 to 0
...@@ -136,6 +137,8 @@ module ahci_ctrl_stat #( ...@@ -136,6 +137,8 @@ module ahci_ctrl_stat #(
input pxci0_clear, // PxCI clear input pxci0_clear, // PxCI clear
output pxci0, // pxCI current value output pxci0, // pxCI current value
input hba_reset_done, // at the end of the HBA reset, clear GHC.HR, GHC.IE
/* /*
*/ */
output reg irq output reg irq
...@@ -143,7 +146,7 @@ module ahci_ctrl_stat #( ...@@ -143,7 +146,7 @@ module ahci_ctrl_stat #(
); );
`include "includes/ahci_localparams.vh" // @SuppressThisWarning VEditor : Unused localparams `include "includes/ahci_localparams.vh" // @SuppressThisWarning VEditor : Unused localparams
wire swr_GHC__IE = soft_write_en && (soft_write_addr == GHC__GHC__IE__ADDR); // wire swr_GHC__IE = soft_write_en && (soft_write_addr == GHC__GHC__IE__ADDR);
wire swr_GHC__IS = soft_write_en && (soft_write_addr == GHC__IS__IPS__ADDR); wire swr_GHC__IS = soft_write_en && (soft_write_addr == GHC__IS__IPS__ADDR);
wire swr_HBA_PORT__PxCMD = soft_write_en && (soft_write_addr == HBA_PORT__PxCMD__ST__ADDR); wire swr_HBA_PORT__PxCMD = soft_write_en && (soft_write_addr == HBA_PORT__PxCMD__ST__ADDR);
wire swr_HBA_PORT__PxIS = soft_write_en && (soft_write_addr == HBA_PORT__PxIS__CPDS__ADDR); wire swr_HBA_PORT__PxIS = soft_write_en && (soft_write_addr == HBA_PORT__PxIS__CPDS__ADDR);
...@@ -152,21 +155,25 @@ module ahci_ctrl_stat #( ...@@ -152,21 +155,25 @@ module ahci_ctrl_stat #(
// wire swr_HBA_PORT__PxSSTS = soft_write_en && (soft_write_addr == HBA_PORT__PxSSTS__SPD__ADDR); // wire swr_HBA_PORT__PxSSTS = soft_write_en && (soft_write_addr == HBA_PORT__PxSSTS__SPD__ADDR);
wire swr_HBA_PORT__PxSERR = soft_write_en && (soft_write_addr == HBA_PORT__PxSERR__DIAG__X__ADDR); wire swr_HBA_PORT__PxSERR = soft_write_en && (soft_write_addr == HBA_PORT__PxSERR__DIAG__X__ADDR);
wire swr_HBA_PORT__PxCI = soft_write_en && (soft_write_addr == HBA_PORT__PxCI__CI__ADDR); wire swr_HBA_PORT__PxCI = soft_write_en && (soft_write_addr == HBA_PORT__PxCI__CI__ADDR);
wire swr_GHC__GHC = soft_write_en && (soft_write_addr == GHC__GHC__HR__ADDR);
reg hba_rst_r = 1; reg hba_rst_r = 1;
reg rst_por; reg rst_por;
reg rst_hba; // @SuppressThisWarning VEditor : Unused, maybe will be used later reg rst_hba; // @SuppressThisWarning VEditor : Unused, maybe will be used later
reg rst_port; // @SuppressThisWarning VEditor : Unused, maybe will be used later reg rst_port; // @SuppressThisWarning VEditor : Unused, maybe will be used later
reg ghc_ie_r; // reg ghc_ie_r;
reg ghc_is_r; reg ghc_is_r;
reg set_ghc_is_r; // active next cycle after one of individual non-masked bits in PxIS is set reg set_ghc_is_r; // active next cycle after one of individual non-masked bits in PxIS is set
reg cleared_ghc; // active next cycle after ghc[1:0] is cleared
reg [31:0] PxIE_r; // some bits will be unused by PxIS_MASK reg [31:0] PxIE_r; // some bits will be unused by PxIS_MASK
reg [31:0] PxIS_r; // some bits will be unused by PxIS_MASK reg [31:0] PxIS_r; // some bits will be unused by PxIS_MASK
reg [11:0] PxSSTS_r; reg [11:0] PxSSTS_r;
reg [31:0] PxSERR_r; // Assuming it is not needed for HBA, just for the software reg [31:0] PxSERR_r; // Assuming it is not needed for HBA, just for the software
reg [31:0] PxCMD_r; reg [31:0] PxCMD_r;
reg pxci0_r; reg pxci0_r;
reg [ 1:0] GHC_r; // only 2 bits are used here
wire ghc_ie = GHC_r[1]; // bit 1 of GHC__GHC
reg cirq_PRC; // clear PRC bit when clearing PxSERR.DIAG.N reg cirq_PRC; // clear PRC bit when clearing PxSERR.DIAG.N
reg cirq_PC; // clear PC bit when clearing PxSERR.DIAG.X reg cirq_PC; // clear PC bit when clearing PxSERR.DIAG.X
...@@ -217,7 +224,7 @@ module ahci_ctrl_stat #( ...@@ -217,7 +224,7 @@ module ahci_ctrl_stat #(
({4{ssts_det_dp}} & 4'h3) | ({4{ssts_det_dp}} & 4'h3) |
({4{ssts_det_offline}} & 4'h4); ({4{ssts_det_offline}} & 4'h4);
// to update only HAB/async changed bits (not by the software) // to update only HBA/async changed bits (not by the software)
wire set_ssts_ipm = ssts_ipm_dnp || ssts_ipm_active || ssts_ipm_part || ssts_ipm_slumb || ssts_ipm_devsleep; wire set_ssts_ipm = ssts_ipm_dnp || ssts_ipm_active || ssts_ipm_part || ssts_ipm_slumb || ssts_ipm_devsleep;
wire set_ssts_spd = ssts_spd_dnp || ssts_spd_gen1 || ssts_spd_gen2|| ssts_spd_gen3; wire set_ssts_spd = ssts_spd_dnp || ssts_spd_gen1 || ssts_spd_gen2|| ssts_spd_gen3;
...@@ -230,19 +237,23 @@ module ahci_ctrl_stat #( ...@@ -230,19 +237,23 @@ module ahci_ctrl_stat #(
reg sirq_changed; reg sirq_changed;
reg pxcmd_changed; reg pxcmd_changed;
reg ghc_is_changed; reg ghc_is_changed;
reg ghc_ghc_changed;
// wire [5:0] regs_changed={pxcmd_changed, serr_changed, ssts_changed, pxci_changed, sirq_changed,ghc_is_changed }; // wire [5:0] regs_changed={pxcmd_changed, serr_changed, ssts_changed, pxci_changed, sirq_changed,ghc_is_changed };
wire [5:0] regs_changed={pxci_changed, pxcmd_changed, serr_changed, ssts_changed, sirq_changed,ghc_is_changed }; wire [6:0] regs_changed={ghc_ghc_changed, pxci_changed, pxcmd_changed, serr_changed, ssts_changed, sirq_changed,ghc_is_changed };
// wire [5:0] update; // wire [5:0] update;
reg [5:1] updating; reg [6:1] updating;
wire [5:0] update_first = {6{update_all}} & wire [6:0] update_first = {7{update_all}} &
{regs_changed[5] && ~(|regs_changed[4:0]), {regs_changed[6] && ~(|regs_changed[5:0]),
regs_changed[5] && ~(|regs_changed[4:0]),
regs_changed[4] && ~(|regs_changed[3:0]), regs_changed[4] && ~(|regs_changed[3:0]),
regs_changed[3] && ~(|regs_changed[2:0]), regs_changed[3] && ~(|regs_changed[2:0]),
regs_changed[2] && ~(|regs_changed[1:0]), regs_changed[2] && ~(|regs_changed[1:0]),
regs_changed[1] && ~ regs_changed[0], regs_changed[1] && ~ regs_changed[0],
regs_changed[0]}; regs_changed[0]};
wire [5:1] update_next = {updating[5] && ~(|updating[4:1]), wire [6:1] update_next = {updating[6] && ~(|updating[5:1]),
updating[5] && ~(|updating[4:1]),
updating[4] && ~(|updating[3:1]), updating[4] && ~(|updating[3:1]),
updating[3] && ~(|updating[2:1]), updating[3] && ~(|updating[2:1]),
updating[2] && ~ updating[1], updating[2] && ~ updating[1],
...@@ -255,10 +266,11 @@ module ahci_ctrl_stat #( ...@@ -255,10 +266,11 @@ module ahci_ctrl_stat #(
wire update_HBA_PORT__PxSERR = update_serr || update_first[3] || update_next[3]; wire update_HBA_PORT__PxSERR = update_serr || update_first[3] || update_next[3];
wire update_HBA_PORT__PxCMD = update_pcmd || update_first[4] || update_next[4]; wire update_HBA_PORT__PxCMD = update_pcmd || update_first[4] || update_next[4];
wire update_HBA_PORT__PxCI = update_pci || update_first[5] || update_next[5]; wire update_HBA_PORT__PxCI = update_pci || update_first[5] || update_next[5];
wire update_GHC_GHC = update_ghc || update_first[6] || update_next[6];
reg pfsm_started_r; reg pfsm_started_r;
assign update_busy = (update_all && (|regs_changed)) || (|updating[5:1]); assign update_busy = (update_all && (|regs_changed)) || (|updating[6:1]);
assign update_pending = | regs_changed; assign update_pending = | regs_changed;
assign pcmd_fre = |(HBA_PORT__PxCMD__FRE__MASK & PxCMD_r); assign pcmd_fre = |(HBA_PORT__PxCMD__FRE__MASK & PxCMD_r);
assign serr_diag_X = |(HBA_PORT__PxSERR__DIAG__X__MASK & PxSERR_r); assign serr_diag_X = |(HBA_PORT__PxSERR__DIAG__X__MASK & PxSERR_r);
...@@ -372,7 +384,9 @@ localparam PxCMD_MASK = HBA_PORT__PxCMD__ICC__MASK | // 'hf0000000; ...@@ -372,7 +384,9 @@ localparam PxCMD_MASK = HBA_PORT__PxCMD__ICC__MASK | // 'hf0000000;
always @(posedge mclk) begin always @(posedge mclk) begin
if (mrst) irq <= 0; if (mrst) irq <= 0;
else irq <= ghc_ie_r && ghc_is_r; // else irq <= ghc_ie_r && ghc_is_r;
else irq <= ghc_ie && ghc_is_r;
end end
// generate reset types // generate reset types
...@@ -385,17 +399,16 @@ localparam PxCMD_MASK = HBA_PORT__PxCMD__ICC__MASK | // 'hf0000000; ...@@ -385,17 +399,16 @@ localparam PxCMD_MASK = HBA_PORT__PxCMD__ICC__MASK | // 'hf0000000;
end end
// GHC_IE register (just one bit) // GHC_IE register (just one bit)
always @(posedge mclk) begin // always @(posedge mclk) begin
if (rst_por) ghc_ie_r <= 0; // if (rst_por) ghc_ie_r <= 0;
else if (swr_GHC__IE) ghc_ie_r <= |(soft_write_data & GHC__GHC__IE__MASK); // else if (swr_GHC__IE) ghc_ie_r <= |(soft_write_data & GHC__GHC__IE__MASK);
// end
end
// swr_GHC__IS register (just one bit) // swr_GHC__IS register (just one bit)
always @(posedge mclk) begin always @(posedge mclk) begin
if (mrst) ghc_is_r <= 0; // any reset? if (mrst || hba_reset_done) ghc_is_r <= 0; // any reset?
else if (set_ghc_is_r) ghc_is_r <= 1; else if (set_ghc_is_r) ghc_is_r <= 1;
else if (swr_GHC__IS) ghc_is_r <= soft_write_data[0]; else if (swr_GHC__IS) ghc_is_r <= soft_write_data[0];
end end
// HBA_PORT__PxIE register // HBA_PORT__PxIE register
...@@ -413,7 +426,17 @@ localparam PxCMD_MASK = HBA_PORT__PxCMD__ICC__MASK | // 'hf0000000; ...@@ -413,7 +426,17 @@ localparam PxCMD_MASK = HBA_PORT__PxCMD__ICC__MASK | // 'hf0000000;
always @(posedge mclk) begin always @(posedge mclk) begin
if (rst_por) set_ghc_is_r <= 0; if (rst_por) set_ghc_is_r <= 0;
// TODO: Not exactly clear - when ghc_is_r should be set after being RWC? After setting some not masked new individual interrupt? // TODO: Not exactly clear - when ghc_is_r should be set after being RWC? After setting some not masked new individual interrupt?
else set_ghc_is_r <= |(sirq & PxIE_r); else set_ghc_is_r <= |(sirq & PxIE_r) || hba_reset_done;
end
// GHC__GHC register
always @(posedge mclk) begin
if (rst_por) cleared_ghc <= 0;
else cleared_ghc <= hba_reset_done;
if (rst_por) GHC_r <= 0;
else if (cleared_ghc) GHC_r <= 0;
else if (swr_GHC__GHC) GHC_r <= soft_write_data[1:0];
end end
// HBA_PORT__PxSSTS register - updated from the HOST only // HBA_PORT__PxSSTS register - updated from the HOST only
...@@ -449,7 +472,7 @@ localparam PxCMD_MASK = HBA_PORT__PxCMD__ICC__MASK | // 'hf0000000; ...@@ -449,7 +472,7 @@ localparam PxCMD_MASK = HBA_PORT__PxCMD__ICC__MASK | // 'hf0000000;
else if (swr_HBA_PORT__PxCI) pxci0_r <= soft_write_data[0]; else if (swr_HBA_PORT__PxCI) pxci0_r <= soft_write_data[0];
end end
// HBA_PORT__PxCMD register - different behavious of differtnt fields // HBA_PORT__PxCMD register - different behaviors of differtnt fields
// use PxCMD_MASK to prevent generation of unneeded register bits // use PxCMD_MASK to prevent generation of unneeded register bits
always @(posedge mclk) begin always @(posedge mclk) begin
...@@ -469,8 +492,9 @@ localparam PxCMD_MASK = HBA_PORT__PxCMD__ICC__MASK | // 'hf0000000; ...@@ -469,8 +492,9 @@ localparam PxCMD_MASK = HBA_PORT__PxCMD__ICC__MASK | // 'hf0000000;
if (!pfsm_started_r) pcmd_st_cleared <= 0; if (!pfsm_started_r) pcmd_st_cleared <= 0;
// else if (swr_HBA_PORT__PxCMD) pcmd_st_cleared <= |(HBA_PORT__PxCMD__ST__MASK & PxCMD_r & ~soft_write_data); // else if (swr_HBA_PORT__PxCMD) pcmd_st_cleared <= |(HBA_PORT__PxCMD__ST__MASK & PxCMD_r & ~soft_write_data);
else pcmd_st_cleared <= swr_HBA_PORT__PxCMD && (|(HBA_PORT__PxCMD__ST__MASK & PxCMD_r & ~soft_write_data)); else pcmd_st_cleared <= swr_HBA_PORT__PxCMD && (|(HBA_PORT__PxCMD__ST__MASK & PxCMD_r & ~soft_write_data));
end end
// Update AXI registers with the current local data // Update AXI registers with the current local data
always @ (posedge mclk) begin always @ (posedge mclk) begin
...@@ -479,16 +503,18 @@ localparam PxCMD_MASK = HBA_PORT__PxCMD__ICC__MASK | // 'hf0000000; ...@@ -479,16 +503,18 @@ localparam PxCMD_MASK = HBA_PORT__PxCMD__ICC__MASK | // 'hf0000000;
({ADDRESS_BITS{update_HBA_PORT__PxSSTS}} & HBA_PORT__PxSSTS__SPD__ADDR) | ({ADDRESS_BITS{update_HBA_PORT__PxSSTS}} & HBA_PORT__PxSSTS__SPD__ADDR) |
({ADDRESS_BITS{update_HBA_PORT__PxSERR}} & HBA_PORT__PxSERR__DIAG__X__ADDR) | ({ADDRESS_BITS{update_HBA_PORT__PxSERR}} & HBA_PORT__PxSERR__DIAG__X__ADDR) |
({ADDRESS_BITS{update_HBA_PORT__PxCMD}} & HBA_PORT__PxCMD__ICC__ADDR) | ({ADDRESS_BITS{update_HBA_PORT__PxCMD}} & HBA_PORT__PxCMD__ICC__ADDR) |
({ADDRESS_BITS{update_HBA_PORT__PxCI}} & HBA_PORT__PxCI__CI__ADDR) ; ({ADDRESS_BITS{update_HBA_PORT__PxCI}} & HBA_PORT__PxCI__CI__ADDR) |
({ADDRESS_BITS{update_GHC_GHC}} & GHC__GHC__AE__ADDR);
//update_HBA_PORT__PxCI //update_HBA_PORT__PxCI
regs_din <= ({32{update_GHC__IS}} & {31'b0, ghc_is_r}) | regs_din <= ({32{update_GHC__IS}} & {31'b0, ghc_is_r}) |
({32{update_HBA_PORT__PxIS}} & PxIS_r) | ({32{update_HBA_PORT__PxIS}} & PxIS_r) |
({32{update_HBA_PORT__PxSSTS}} & {20'b0, PxSSTS_r[11:0]}) | ({32{update_HBA_PORT__PxSSTS}} & {20'b0, PxSSTS_r[11:0]}) |
({32{update_HBA_PORT__PxSERR}} & PxSERR_r) | ({32{update_HBA_PORT__PxSERR}} & PxSERR_r) |
({32{update_HBA_PORT__PxCMD}} & PxCMD_r) | ({32{update_HBA_PORT__PxCMD}} & PxCMD_r) |
({32{update_HBA_PORT__PxCI}} & {31'b0, pxci0}); ({32{update_HBA_PORT__PxCI}} & {31'b0, pxci0}) |
({32{update_GHC_GHC}} & (GHC__GHC__AE__DFLT | {30'b0, GHC_r})) ;
regs_we <= update_GHC__IS || update_HBA_PORT__PxIS || update_HBA_PORT__PxSSTS || update_HBA_PORT__PxSERR | update_HBA_PORT__PxCMD || update_HBA_PORT__PxCI;
regs_we <= update_GHC__IS || update_HBA_PORT__PxIS || update_HBA_PORT__PxSSTS || update_HBA_PORT__PxSERR | update_HBA_PORT__PxCMD || update_HBA_PORT__PxCI || update_GHC_GHC;
// pending updates // pending updates
if (mrst) pxci_changed <= 1; //0; if (mrst) pxci_changed <= 1; //0;
...@@ -515,10 +541,17 @@ localparam PxCMD_MASK = HBA_PORT__PxCMD__ICC__MASK | // 'hf0000000; ...@@ -515,10 +541,17 @@ localparam PxCMD_MASK = HBA_PORT__PxCMD__ICC__MASK | // 'hf0000000;
else if (set_ghc_is_r) ghc_is_changed <= 1; else if (set_ghc_is_r) ghc_is_changed <= 1;
else if (update_GHC__IS) ghc_is_changed <= 0; else if (update_GHC__IS) ghc_is_changed <= 0;
if (mrst) ghc_ghc_changed <= 1; //0;
else if (set_ghc_is_r) ghc_ghc_changed <= 1;
else if (update_GHC_GHC) ghc_ghc_changed <= 0;
// updating registers if needed, 0 to 6 cycles, in priority sequence // updating registers if needed, 0 to 6 cycles, in priority sequence
if (mrst) updating[5:1] <= 0; if (mrst) updating[6:1] <= 0;
else if (update_all) updating[5:1] <= regs_changed[5:1] & ~update_first[5:1]; else if (update_all) updating[6:1] <= regs_changed[6:1] & ~update_first[6:1];
else updating[5:1] <= updating[5:1] & ~ update_next[5:1]; else updating[6:1] <= updating[6:1] & ~ update_next[6:1];
// detect software setting for PxCMD.ST 0->1 and 1->0 // detect software setting for PxCMD.ST 0->1 and 1->0
/* /*
......
...@@ -134,6 +134,8 @@ module ahci_fsm ...@@ -134,6 +134,8 @@ module ahci_fsm
input sctl_det_changed, // Software had written new value to sctl_det input sctl_det_changed, // Software had written new value to sctl_det
output sctl_det_reset, // clear sctl_det_changed output sctl_det_reset, // clear sctl_det_changed
output hba_rst_done, // reset GHC.HR and other bits
output pxci0_clear, // PxCI clear output pxci0_clear, // PxCI clear
input pxci0, // pxCI current value input pxci0, // pxCI current value
...@@ -433,6 +435,7 @@ module ahci_fsm ...@@ -433,6 +435,7 @@ module ahci_fsm
.PXSSTS_DET_1 (ssts_det_dnp), // output reg .PXSSTS_DET_1 (ssts_det_dnp), // output reg
.SSTS_DET_OFFLINE (ssts_det_offline), // output reg .SSTS_DET_OFFLINE (ssts_det_offline), // output reg
.SCTL_DET_CLEAR (sctl_det_reset), // output reg .SCTL_DET_CLEAR (sctl_det_reset), // output reg
.HBA_RST_DONE (hba_rst_done), // output reg
// FIS RECEIVE // FIS RECEIVE
.SET_UPDATE_SIG (set_update_sig), // output reg .SET_UPDATE_SIG (set_update_sig), // output reg
.UPDATE_SIG (update_sig), // output reg .UPDATE_SIG (update_sig), // output reg
......
...@@ -361,7 +361,7 @@ module ahci_top#( ...@@ -361,7 +361,7 @@ module ahci_top#(
/// wire sactive0; // bit 0 of sActive DWORD received in SDB FIS /// wire sactive0; // bit 0 of sActive DWORD received in SDB FIS
// Using even word count (will be rounded up), partial DWORD (last) will be handled by PRD length if needed // Using even word count (will be rounded up), partial DWORD (last) will be handled by PRD length if needed
wire [31:0] xfer_cntr; wire [31:2] xfer_cntr;
wire xfer_cntr_zero; wire xfer_cntr_zero;
/// wire [11:0] data_in_dwords; // number of DWORDs received in data FIS (can be updated internally). Is it needed? /// wire [11:0] data_in_dwords; // number of DWORDs received in data FIS (can be updated internally). Is it needed?
...@@ -420,7 +420,9 @@ module ahci_top#( ...@@ -420,7 +420,9 @@ module ahci_top#(
wire pcmd_cr_set; // command list run set wire pcmd_cr_set; // command list run set
wire pcmd_cr_reset; // command list run reset wire pcmd_cr_reset; // command list run reset
// wire pcmd_fr; // ahci_fis_receive:get_fis_busy - use frcv_busy // wire pcmd_fr; // ahci_fis_receive:get_fis_busy - use frcv_busy
wire pcmd_fre; // FIS enable copy to memory
wire pcmd_fre0; // FIS enable copy to memory
wire pcmd_fre = pcmd_fre0 || 1; // FIS enable copy to memory
// wire pcmd_clear_bsy_drq; // == ahci_fis_receive:clear_bsy_drq // wire pcmd_clear_bsy_drq; // == ahci_fis_receive:clear_bsy_drq
wire pcmd_clo; // RW1, causes ahci_fis_receive:clear_bsy_drq, that in turn resets this bit wire pcmd_clo; // RW1, causes ahci_fis_receive:clear_bsy_drq, that in turn resets this bit
// wire pcmd_clear_st; // RW clear ST (start) bit // wire pcmd_clear_st; // RW clear ST (start) bit
...@@ -472,6 +474,7 @@ module ahci_top#( ...@@ -472,6 +474,7 @@ module ahci_top#(
wire pxci0_clear; // PxCI clear wire pxci0_clear; // PxCI clear
wire pxci0; // pxCI current value wire pxci0; // pxCI current value
wire hba_rst_done; // HBA reset done - clear GHC.HR (and some other regs)
wire [9:0] last_jump_addr; wire [9:0] last_jump_addr;
wire [31:0] debug_dma; wire [31:0] debug_dma;
...@@ -580,6 +583,7 @@ module ahci_top#( ...@@ -580,6 +583,7 @@ module ahci_top#(
.sctl_det (sctl_det), // input[3:0] .sctl_det (sctl_det), // input[3:0]
.sctl_det_changed (sctl_det_changed), // input .sctl_det_changed (sctl_det_changed), // input
.sctl_det_reset (sctl_det_reset), // output .sctl_det_reset (sctl_det_reset), // output
.hba_rst_done (hba_rst_done), // output
.pxci0_clear (pxci0_clear), // output .pxci0_clear (pxci0_clear), // output
.pxci0 (pxci0), // input .pxci0 (pxci0), // input
...@@ -629,7 +633,7 @@ module ahci_top#( ...@@ -629,7 +633,7 @@ module ahci_top#(
.decr_dwcr (frcv_decr_dwcr), // output increment pXferCntr after transmit by data transmitted) .decr_dwcr (frcv_decr_dwcr), // output increment pXferCntr after transmit by data transmitted)
.decr_dwcw (frcv_decr_dwcw), // output increment pXferCntr after transmit by data transmitted) .decr_dwcw (frcv_decr_dwcw), // output increment pXferCntr after transmit by data transmitted)
// .decr_DXC_dw (data_out_dwords), // output[11:2] **** Probably not needed // .decr_DXC_dw (data_out_dwords), // output[11:2] **** Probably not needed
.pxcmd_fre (pcmd_fre), // input .pxcmd_fre ( pcmd_fre), // input
.pPioXfer (pPioXfer), // input .pPioXfer (pPioXfer), // input
.tfd_sts (tfd_sts), // input[7:0] .tfd_sts (tfd_sts), // input[7:0]
/// .tfd_err (tfd_err), // input[7:0] /// .tfd_err (tfd_err), // input[7:0]
...@@ -731,7 +735,8 @@ wire[1:0] debug_get_fis_busy_r; // output[1:0] ...@@ -731,7 +735,8 @@ wire[1:0] debug_get_fis_busy_r; // output[1:0]
.was_port_rst (was_port_rst), // output .was_port_rst (was_port_rst), // output
.debug_in0 ({ debug_data_in_ready, // output .debug_in0 ({ debug_data_in_ready, // output
debug_fis_end_w, // output debug_fis_end_w, // output
debug_fis_end_r[1:0], // output[1:0] xfer_cntr_zero,
debug_fis_end_r[0], // debug_fis_end_r[1:0], // output[1:0]
debug_get_fis_busy_r[1:0], // output[1:0] debug_get_fis_busy_r[1:0], // output[1:0]
debug_dma[25:0]}), // input[31:0] debug_dma[25:0]}), // input[31:0]
// .debug_in1 ({xclk_period[7:0], // lower 8 bits of 12-bit value. Same frequency would be 0x800 (msb opposite to 3 next bits) // .debug_in1 ({xclk_period[7:0], // lower 8 bits of 12-bit value. Same frequency would be 0x800 (msb opposite to 3 next bits)
...@@ -795,6 +800,7 @@ wire[1:0] debug_get_fis_busy_r; // output[1:0] ...@@ -795,6 +800,7 @@ wire[1:0] debug_get_fis_busy_r; // output[1:0]
.update_serr (1'b0), // update_HBA_PORT__PxSERR), // input .update_serr (1'b0), // update_HBA_PORT__PxSERR), // input
.update_pcmd (1'b0), // update_HBA_PORT__PxCMD), // input .update_pcmd (1'b0), // update_HBA_PORT__PxCMD), // input
.update_pci (1'b0), // update_HBA_PORT__PxCI), // input .update_pci (1'b0), // update_HBA_PORT__PxCI), // input
.update_ghc (1'b0), // update _GHC_GHC, // input
.pcmd_clear_icc (1'b0), // pcmd_clear_icc), // input .pcmd_clear_icc (1'b0), // pcmd_clear_icc), // input
.pcmd_esp (pcmd_esp), // input .pcmd_esp (pcmd_esp), // input
...@@ -802,7 +808,7 @@ wire[1:0] debug_get_fis_busy_r; // output[1:0] ...@@ -802,7 +808,7 @@ wire[1:0] debug_get_fis_busy_r; // output[1:0]
.pcmd_cr_set (pcmd_cr_set), // input .pcmd_cr_set (pcmd_cr_set), // input
.pcmd_cr_reset (pcmd_cr_reset), // input .pcmd_cr_reset (pcmd_cr_reset), // input
.pcmd_fr (frcv_busy), // input .pcmd_fr (frcv_busy), // input
.pcmd_fre (pcmd_fre), // output .pcmd_fre (pcmd_fre0), // output
.pcmd_clear_bsy_drq (frcv_clear_bsy_drq), // input .pcmd_clear_bsy_drq (frcv_clear_bsy_drq), // input
.pcmd_clo (pcmd_clo), // output .pcmd_clo (pcmd_clo), // output
.pcmd_clear_st (1'b0), // pcmd_clear_st), // input .pcmd_clear_st (1'b0), // pcmd_clear_st), // input
...@@ -855,6 +861,7 @@ wire[1:0] debug_get_fis_busy_r; // output[1:0] ...@@ -855,6 +861,7 @@ wire[1:0] debug_get_fis_busy_r; // output[1:0]
.sctl_det_reset (sctl_det_reset), // input .sctl_det_reset (sctl_det_reset), // input
.pxci0_clear (pxci0_clear), // input .pxci0_clear (pxci0_clear), // input
.pxci0 (pxci0), // output .pxci0 (pxci0), // output
.hba_reset_done (hba_rst_done), // input
.irq (irq) // output reg .irq (irq) // output reg
); );
...@@ -1087,7 +1094,7 @@ wire [9:0] xmit_dbg_01; ...@@ -1087,7 +1094,7 @@ wire [9:0] xmit_dbg_01;
); );
// Datascope code // Datascope code
`define DATASCOPE_V2 //`define DATASCOPE_V2
// Datascope interface (write to memory that can be software-read) // Datascope interface (write to memory that can be software-read)
`ifdef USE_DATASCOPE `ifdef USE_DATASCOPE
...@@ -1171,13 +1178,13 @@ debug_dma_h2d ...@@ -1171,13 +1178,13 @@ debug_dma_h2d
}; };
*/ */
`endif // DATASCOPE_V2 //`endif // DATASCOPE_V2
`else
`ifdef DATASCOPE_V1 //`ifdef DATASCOPE_V1
localparam DATASCOPE_CFIS_START=0; localparam DATASCOPE_CFIS_START=0;
localparam DATASCOPE_INCOMING_POST=32; localparam DATASCOPE_INCOMING_POST=32;
reg [ADDRESS_BITS-1:0] datascope_waddr_r; reg [ADDRESS_BITS-1:0] datascope_waddr_r=0;
reg [1:0] datascope_run; reg [1:0] datascope_run;
reg datascope_link_run; reg datascope_link_run;
...@@ -1192,8 +1199,25 @@ debug_dma_h2d ...@@ -1192,8 +1199,25 @@ debug_dma_h2d
reg [2:0] datascope_incoming_run; reg [2:0] datascope_incoming_run;
reg [7:0] datascope_incoming_cntr; reg [7:0] datascope_incoming_cntr;
reg datascope_receive_fis; reg datascope_receive_fis;
reg [9:0] datascope_last_jump_addr=0;
reg [1:0] datascope_new_jump = 0;
reg [15:0] datascope_jump_cntr = 0;
//last_jump_addr[9:0]
always @(posedge mclk) begin always @(posedge mclk) begin
if (mrst) datascope_new_jump[0] <= 0;
else datascope_new_jump[0] <= datascope_last_jump_addr != last_jump_addr;
if (mrst) datascope_new_jump[1] <= 0;
else datascope_new_jump[1] <= datascope_new_jump[0];
if (mrst) datascope_last_jump_addr <= 0;
if (datascope_new_jump) datascope_last_jump_addr <= last_jump_addr;
if (datascope_we) datascope_jump_cntr <= datascope_jump_cntr+1;
if (mrst) datascope_receive_fis <= 0; if (mrst) datascope_receive_fis <= 0;
else if (datascope_incoming_start) datascope_receive_fis <= 1; else if (datascope_incoming_start) datascope_receive_fis <= 1;
else if (frcv_get_dsfis || else if (frcv_get_dsfis ||
...@@ -1224,15 +1248,21 @@ debug_dma_h2d ...@@ -1224,15 +1248,21 @@ debug_dma_h2d
end end
assign datascope_clk = mclk; assign datascope_clk = mclk;
assign datascope_waddr = datascope_waddr_r; // assign datascope_waddr = datascope_waddr_r;
assign datascope_waddr = last_jump_addr;
// assign datascope_we = (datascope_run[0] && h2d_valid && h2d_ready) || fsnd_done || d2h_ready || xmit_ok || xmit_err; // assign datascope_we = (datascope_run[0] && h2d_valid && h2d_ready) || fsnd_done|| xmit_ok || xmit_err; /// || d2h_ready ;
// assign datascope_we = (datascope_run[0] && h2d_valid && h2d_ready) || d2h_ready || datascope_link_run; // assign datascope_we = (datascope_run[0] && h2d_valid && h2d_ready) || d2h_ready || datascope_link_run;
assign datascope_we = (datascope_run[0] && h2d_valid && h2d_ready) || datascope_incoming_run[0] || datascope_link_run; /// assign datascope_we = (datascope_run[0] && h2d_valid && h2d_ready) || datascope_incoming_run[0] || datascope_link_run;
// //
assign datascope_we = &datascope_new_jump;
// assign datascope_di = {14'h3fff,fsnd_pCmdToIssue, xfer_cntr_zero, datascope_jump_cntr};
assign datascope_di = {2'h3, fsnd_pCmdToIssue, xfer_cntr_zero, 2'b0, last_jump_addr[9:0],datascope_jump_cntr};
// assign datascope_di = d2h_ready? {d2h_type, // assign datascope_di = d2h_ready? {d2h_type,
/*
assign datascope_di = datascope_incoming_run[0]? {d2h_type, assign datascope_di = datascope_incoming_run[0]? {d2h_type,
debug_in_link[26], // state idle debug_in_link[26], // state idle
debug_in_link[4:0], // encoded state (1 cycle later) debug_in_link[4:0], // encoded state (1 cycle later)
...@@ -1259,6 +1289,8 @@ debug_dma_h2d ...@@ -1259,6 +1289,8 @@ debug_dma_h2d
debug_in_link[24], // fsnd_dx_err[1], //fsnd_dx_err[2:0], debug_in_link[24], // fsnd_dx_err[1], //fsnd_dx_err[2:0],
debug_in_link[23], debug_in_link[23],
datascope_id[2:0], {12-ADDRESS_BITS{1'b0}}, datascope_waddr_r}); datascope_id[2:0], {12-ADDRESS_BITS{1'b0}}, datascope_waddr_r});
*/
/* /*
assign debug_out[ 4: 0] = debug_states_encoded; assign debug_out[ 4: 0] = debug_states_encoded;
assign debug_out[7: 5] = { assign debug_out[7: 5] = {
...@@ -1340,8 +1372,10 @@ assign debug_out[7: 5] = { ...@@ -1340,8 +1372,10 @@ assign debug_out[7: 5] = {
datascope_run[1] <= datascope_run[0]; datascope_run[1] <= datascope_run[0];
if (fsnd_cfis_xmit) datascope_waddr_r <= DATASCOPE_CFIS_START; /// if (fsnd_cfis_xmit) datascope_waddr_r <= DATASCOPE_CFIS_START;
else if (datascope_we) datascope_waddr_r <= datascope_waddr_r + 1; /// if (mrst) datascope_waddr_r <= DATASCOPE_CFIS_START;
/// else
if (datascope_we) datascope_waddr_r <= datascope_waddr_r + 1;
if (mrst) datascope_id <= 0; if (mrst) datascope_id <= 0;
......
...@@ -174,10 +174,11 @@ ...@@ -174,10 +174,11 @@
// wire sata_clk; // wire sata_clk;
// wire sata_rst; // wire sata_rst;
wire hba_arst; // @SuppressThisWarning VEditor unused wire hba_arst; // @S uppressThisWarning VEditor unused
wire port_arst; // @SuppressThisWarning VEditor unused wire port_arst; // @SuppressThisWarning VEditor unused
wire port_arst_any; wire port_arst_any;
wire exrst = port_arst_any; // now both hba_arst and port_arst are the same? // wire exrst = port_arst_any; // now both hba_arst and port_arst are the same?
wire exrst = port_arst_any || hba_arst; // now both hba_arst and port_arst are the same (only difference in fsm)
......
/******************************************************************************* /*******************************************************************************
* Module: action_decoder * Module: action_decoder
* Date:2016-02-16 * Date:2016-02-20
* Author: auto-generated file, see ahci_fsm_sequence.py * Author: auto-generated file, see ahci_fsm_sequence.py
* Description: Decode sequencer code to 1-hot actions * Description: Decode sequencer code to 1-hot actions
*******************************************************************************/ *******************************************************************************/
...@@ -28,6 +28,7 @@ module action_decoder ( ...@@ -28,6 +28,7 @@ module action_decoder (
output reg PXSSTS_DET_1, output reg PXSSTS_DET_1,
output reg SSTS_DET_OFFLINE, output reg SSTS_DET_OFFLINE,
output reg SCTL_DET_CLEAR, output reg SCTL_DET_CLEAR,
output reg HBA_RST_DONE,
output reg SET_UPDATE_SIG, output reg SET_UPDATE_SIG,
output reg UPDATE_SIG, output reg UPDATE_SIG,
output reg UPDATE_ERR_STS, output reg UPDATE_ERR_STS,
...@@ -80,38 +81,39 @@ module action_decoder ( ...@@ -80,38 +81,39 @@ module action_decoder (
PXSSTS_DET_1 <= enable && data[ 6] && data[ 1]; PXSSTS_DET_1 <= enable && data[ 6] && data[ 1];
SSTS_DET_OFFLINE <= enable && data[ 7] && data[ 1]; SSTS_DET_OFFLINE <= enable && data[ 7] && data[ 1];
SCTL_DET_CLEAR <= enable && data[ 8] && data[ 1]; SCTL_DET_CLEAR <= enable && data[ 8] && data[ 1];
SET_UPDATE_SIG <= enable && data[ 9] && data[ 1]; HBA_RST_DONE <= enable && data[ 9] && data[ 1];
UPDATE_SIG <= enable && data[10] && data[ 1]; SET_UPDATE_SIG <= enable && data[10] && data[ 1];
UPDATE_ERR_STS <= enable && data[ 3] && data[ 2]; UPDATE_SIG <= enable && data[ 3] && data[ 2];
UPDATE_PIO <= enable && data[ 4] && data[ 2]; UPDATE_ERR_STS <= enable && data[ 4] && data[ 2];
UPDATE_PRDBC <= enable && data[ 5] && data[ 2]; UPDATE_PIO <= enable && data[ 5] && data[ 2];
CLEAR_BSY_DRQ <= enable && data[ 6] && data[ 2]; UPDATE_PRDBC <= enable && data[ 6] && data[ 2];
CLEAR_BSY_SET_DRQ <= enable && data[ 7] && data[ 2]; CLEAR_BSY_DRQ <= enable && data[ 7] && data[ 2];
SET_BSY <= enable && data[ 8] && data[ 2]; CLEAR_BSY_SET_DRQ <= enable && data[ 8] && data[ 2];
SET_STS_7F <= enable && data[ 9] && data[ 2]; SET_BSY <= enable && data[ 9] && data[ 2];
SET_STS_80 <= enable && data[10] && data[ 2]; SET_STS_7F <= enable && data[10] && data[ 2];
XFER_CNTR_CLEAR <= enable && data[ 4] && data[ 3]; SET_STS_80 <= enable && data[ 4] && data[ 3];
DECR_DWCR <= enable && data[ 5] && data[ 3]; XFER_CNTR_CLEAR <= enable && data[ 5] && data[ 3];
DECR_DWCW <= enable && data[ 6] && data[ 3]; DECR_DWCR <= enable && data[ 6] && data[ 3];
FIS_FIRST_FLUSH <= enable && data[ 7] && data[ 3]; DECR_DWCW <= enable && data[ 7] && data[ 3];
CLEAR_CMD_TO_ISSUE <= enable && data[ 8] && data[ 3]; FIS_FIRST_FLUSH <= enable && data[ 8] && data[ 3];
DMA_ABORT <= enable && data[ 9] && data[ 3]; CLEAR_CMD_TO_ISSUE <= enable && data[ 9] && data[ 3];
DMA_PRD_IRQ_CLEAR <= enable && data[10] && data[ 3]; DMA_ABORT <= enable && data[10] && data[ 3];
XMIT_COMRESET <= enable && data[ 5] && data[ 4]; DMA_PRD_IRQ_CLEAR <= enable && data[ 5] && data[ 4];
SEND_SYNC_ESC <= enable && data[ 6] && data[ 4]; XMIT_COMRESET <= enable && data[ 6] && data[ 4];
SET_OFFLINE <= enable && data[ 7] && data[ 4]; SEND_SYNC_ESC <= enable && data[ 7] && data[ 4];
R_OK <= enable && data[ 8] && data[ 4]; SET_OFFLINE <= enable && data[ 8] && data[ 4];
R_ERR <= enable && data[ 9] && data[ 4]; R_OK <= enable && data[ 9] && data[ 4];
FETCH_CMD <= enable && data[10] && data[ 4]; R_ERR <= enable && data[10] && data[ 4];
ATAPI_XMIT <= enable && data[ 6] && data[ 5]; FETCH_CMD <= enable && data[ 6] && data[ 5];
CFIS_XMIT <= enable && data[ 7] && data[ 5]; ATAPI_XMIT <= enable && data[ 7] && data[ 5];
DX_XMIT <= enable && data[ 8] && data[ 5]; CFIS_XMIT <= enable && data[ 8] && data[ 5];
GET_DATA_FIS <= enable && data[ 9] && data[ 5]; DX_XMIT <= enable && data[ 9] && data[ 5];
GET_DSFIS <= enable && data[10] && data[ 5]; GET_DATA_FIS <= enable && data[10] && data[ 5];
GET_IGNORE <= enable && data[ 7] && data[ 6]; GET_DSFIS <= enable && data[ 7] && data[ 6];
GET_PSFIS <= enable && data[ 8] && data[ 6]; GET_IGNORE <= enable && data[ 8] && data[ 6];
GET_RFIS <= enable && data[ 9] && data[ 6]; GET_PSFIS <= enable && data[ 9] && data[ 6];
GET_SDBFIS <= enable && data[10] && data[ 6]; GET_RFIS <= enable && data[10] && data[ 6];
GET_UFIS <= enable && data[ 8] && data[ 7]; GET_SDBFIS <= enable && data[ 8] && data[ 7];
GET_UFIS <= enable && data[ 9] && data[ 7];
end end
endmodule endmodule
/******************************************************************************* /*******************************************************************************
* Module: condition_mux * Module: condition_mux
* Date:2016-02-16 * Date:2016-02-20
* Author: auto-generated file, see ahci_fsm_sequence.py * Author: auto-generated file, see ahci_fsm_sequence.py
* Description: Select condition * Description: Select condition
*******************************************************************************/ *******************************************************************************/
......
...@@ -47,6 +47,7 @@ actions = ['NOP', ...@@ -47,6 +47,7 @@ actions = ['NOP',
# CTRL_STAT # CTRL_STAT
'PXSERR_DIAG_X', 'SIRQ_DHR', 'SIRQ_DP', 'SIRQ_DS', 'SIRQ_IF', 'SIRQ_INF', 'SIRQ_PS', 'SIRQ_SDB', 'SIRQ_TFE', 'SIRQ_UF', 'PXSERR_DIAG_X', 'SIRQ_DHR', 'SIRQ_DP', 'SIRQ_DS', 'SIRQ_IF', 'SIRQ_INF', 'SIRQ_PS', 'SIRQ_SDB', 'SIRQ_TFE', 'SIRQ_UF',
'PFSM_STARTED', 'PCMD_CR_CLEAR', 'PCMD_CR_SET', 'PXCI0_CLEAR', 'PXSSTS_DET_1', 'SSTS_DET_OFFLINE', 'SCTL_DET_CLEAR', 'PFSM_STARTED', 'PCMD_CR_CLEAR', 'PCMD_CR_SET', 'PXCI0_CLEAR', 'PXSSTS_DET_1', 'SSTS_DET_OFFLINE', 'SCTL_DET_CLEAR',
'HBA_RST_DONE',
# FIS RECEIVE # FIS RECEIVE
'SET_UPDATE_SIG', 'UPDATE_SIG', 'UPDATE_ERR_STS', 'UPDATE_PIO', 'UPDATE_PRDBC', 'CLEAR_BSY_DRQ', 'SET_UPDATE_SIG', 'UPDATE_SIG', 'UPDATE_ERR_STS', 'UPDATE_PIO', 'UPDATE_PRDBC', 'CLEAR_BSY_DRQ',
'CLEAR_BSY_SET_DRQ', 'SET_BSY', 'SET_STS_7F', 'SET_STS_80', 'XFER_CNTR_CLEAR', 'DECR_DWCR', 'DECR_DWCW', 'FIS_FIRST_FLUSH', 'CLEAR_BSY_SET_DRQ', 'SET_BSY', 'SET_STS_7F', 'SET_STS_80', 'XFER_CNTR_CLEAR', 'DECR_DWCR', 'DECR_DWCW', 'FIS_FIRST_FLUSH',
...@@ -83,7 +84,7 @@ conditions = [ ...@@ -83,7 +84,7 @@ conditions = [
sequence = [{LBL:'POR', ADDR: 0x0, ACT: NOP}, sequence = [{LBL:'POR', ADDR: 0x0, ACT: NOP},
{ GOTO:'H:Init'}, { GOTO:'H:Init'},
{LBL:'HBA_RST', ADDR: 0x2, ACT: NOP}, {LBL:'HBA_RST', ADDR: 0x2, ACT: NOP},
{ GOTO:'H:Init'}, { GOTO:'H:HBA_RST'},
{LBL:'PORT_RST', ADDR: 0x4, ACT: NOP}, {LBL:'PORT_RST', ADDR: 0x4, ACT: NOP},
{ GOTO:'H:Init'}, { GOTO:'H:Init'},
...@@ -94,7 +95,9 @@ sequence = [{LBL:'POR', ADDR: 0x0, ACT: NOP}, ...@@ -94,7 +95,9 @@ sequence = [{LBL:'POR', ADDR: 0x0, ACT: NOP},
{LBL:'ST_CLEARED',ADDR: 0x8,ACT: NOP}, # TODO: make sure this jump is not from P:Init {LBL:'ST_CLEARED',ADDR: 0x8,ACT: NOP}, # TODO: make sure this jump is not from P:Init
{ GOTO:'P:StartBitCleared'}, { GOTO:'P:StartBitCleared'},
{LBL:'H:HBA_RST', ACT: 'HBA_RST_DONE'}, # Reset GHC.HR and other things
{ GOTO:'H:Init'},
{LBL:'H:Init', ACT: NOP}, {LBL:'H:Init', ACT: NOP},
{ GOTO:'H:WaitForAhciEnable'}, { GOTO:'H:WaitForAhciEnable'},
......
...@@ -88,6 +88,7 @@ module gtx_wrap #( ...@@ -88,6 +88,7 @@ module gtx_wrap #(
output wire txresetdone, output wire txresetdone,
input wire txcominit, input wire txcominit,
input wire txcomwake, input wire txcomwake,
output wire txcomfinish, // @txusrclk2
// elastic buffer status // elastic buffer status
output wire rxelsfull, output wire rxelsfull,
output wire rxelsempty, output wire rxelsempty,
...@@ -207,7 +208,7 @@ if (DATA_BYTE_WIDTH == 4) begin ...@@ -207,7 +208,7 @@ if (DATA_BYTE_WIDTH == 4) begin
reg [ 1:0] txcharisk_enc_in_r; // TODO: remove async reset reg [ 1:0] txcharisk_enc_in_r; // TODO: remove async reset
wire [38:0] txdata_resync_out; wire [38:0] txdata_resync_out;
wire txdata_resync_valid; wire txdata_resync_valid;
reg [1:0] txcomwake_gtx_f; // 2 registers just to match latency (data to the 3 next) in Alexey's code, probbaly not needed reg [1:0] txcomwake_gtx_f; // 2 registers just to match latency (data to the 3 next) in Alexey's code, probably not needed
reg [1:0] txcominit_gtx_f; reg [1:0] txcominit_gtx_f;
reg [1:0] txelecidle_gtx_f; reg [1:0] txelecidle_gtx_f;
...@@ -1261,7 +1262,7 @@ gtxe2_channel_wrapper( ...@@ -1261,7 +1262,7 @@ gtxe2_channel_wrapper(
.TXPCSRESET (txpcsreset), .TXPCSRESET (txpcsreset),
.TXPMARESET (1'b0), .TXPMARESET (1'b0),
.TXRESETDONE (txresetdone_gtx), .TXRESETDONE (txresetdone_gtx),
.TXCOMFINISH (), .TXCOMFINISH (txcomfinish),
.TXCOMINIT (txcominit_gtx), .TXCOMINIT (txcominit_gtx),
.TXCOMSAS (1'b0), .TXCOMSAS (1'b0),
.TXCOMWAKE (txcomwake_gtx), .TXCOMWAKE (txcomwake_gtx),
......
...@@ -531,6 +531,7 @@ gtx_wrap ...@@ -531,6 +531,7 @@ gtx_wrap
.txresetdone (txresetdone), // output wire .txresetdone (txresetdone), // output wire
.txcominit (txcominit), // input wire .txcominit (txcominit), // input wire
.txcomwake (txcomwake), // input wire .txcomwake (txcomwake), // input wire
.txcomfinish (), // output wire
.rxelsfull (rxelsfull), // output wire .rxelsfull (rxelsfull), // output wire
.rxelsempty (rxelsempty), // output wire .rxelsempty (rxelsempty), // output wire
.txdata (txdata), // input [31:0] wire .txdata (txdata), // input [31:0] wire
......
, .INIT_00 (256'h00100000000E0000000C00000033000000200000000A0000000A0000000A0000) , .INIT_00 (256'h00100000000E0000000C02020035000000220000000C0000000A0000000C0000)
, .INIT_01 (256'h001944521C399446543044170000001900880019003002020204008400220006) , .INIT_01 (256'h1C3B9448543244190000001B0108001B00500402040401040022000600120000)
, .INIT_02 (256'h001900050019C82E000C04020110002924FB2503024000190003004204040000) , .INIT_02 (256'h001BC8300014000C0210002B24FD25050440001B0003004200180000001B4454)
, .INIT_03 (256'h845284BE44374C682C4214190012003900880018000A02080022001901020090) , .INIT_03 (256'h44394C6A2C44141B0012003B01080028000A04080022001B01020110001B0005)
, .INIT_04 (256'h00190110003901100019144601020030020202040039B07D707A041000398C6B) , .INIT_04 (256'h003B0210001B14480102005004020404003BB07F707C0060003B8C6D845484C0)
, .INIT_05 (256'h64540C2504580000004E24FB250300C0004C24FB250300C0005C000000390000) , .INIT_05 (256'h045A0000005024FD25050140004E24FD25050140005E0000003B0000001B0210)
, .INIT_06 (256'hD10550F8903900A00104006B0202005000E2A89368F018E918CB98A758D73882) , .INIT_06 (256'h903B01200204006D0402009000E4A89568F218EB18CD98A958D9388464560C27)
, .INIT_07 (256'h0060003900000039B07D00000050004400220039B07D707A307730F001080071) , .INIT_07 (256'h0000003BB07F0000005200840022003BB07F707C307930F202080073D10750FA)
, .INIT_08 (256'h00050091C88F002200240091288B28FF000C0110008624FB25030240009CD0FD) , .INIT_08 (256'hC891002200440093288D290100140210008824FD25050440009ED0FF00A0003B)
, .INIT_09 (256'h48A528A128FF00140039487F0CAD28FF0110009724FB25030140005004020091) , .INIT_09 (256'h29010024003B48810CAF29010210009924FD250502400052000C009300050093)
, .INIT_0A (256'h8839089C040800AD011000AB24FB250300C000500081005048A5002200240039) , .INIT_0A (256'h003000AF021000AD24FD2505014000520081005248A700220044003B48A728A3)
, .INIT_0B (256'h00C004080039889C040800090039889C50BA0024004800B5D0FD50F8012000B1) , .INIT_0B (256'h003B889E00300009003B889E50BC0044008800B7D0FF50FA022000B3883B089E)
, .INIT_0C (256'h011000CF24FB250304200039889C50BA00240028011000C5C50324FB24FB0220) , .INIT_0C (256'h24FD250500C0003B889E50BC00440048021000C7C50524FD24FD042000C20030)
, .INIT_0D (256'h0050C8E028FF000C011000DB24FB25030440003934D2000000D4001100D4C8D2) , .INIT_0D (256'h29010014021000DD24FD25050180003B34D4000000D6001100D6C8D4021000D1)
, .INIT_0E (256'h00F60082011000ED24FB250300C000390401011000E624FB2503018000500101) , .INIT_0E (256'h021000EF24FD25050140003B0401021000E824FD25050280005201010052C8E2)
, .INIT_0F (256'h02010101002100FD021001010021004400F6000000F6011000F424FB250300C0) , .INIT_0F (256'h002100FF041001030021008400F8000000F8021000F624FD2505014000F80082)
, .INIT_10 (256'h0000000000000000000000000000000000000039004101050210010100000101) , .INIT_10 (256'h0000000000000000000000000000003B00410107041001030000010302010103)
, .INITP_00 (256'hC8220098170902401E272722222800309418810820809C802018880022222222) , .INITP_00 (256'h8220098170902401E272722222800309418810820809C8020188800222222222)
, .INITP_01 (256'h88882227209C82720A09C22089C680272181A01CB889C8605A2A89C882068270) , .INITP_01 (256'h8882227209C82720A09C22089C680272181A01CB889C8605A2A89C882068270C)
, .INITP_02 (256'h0000000000000000000000000000000000000000000000000000000000000888) , .INITP_02 (256'h0000000000000000000000000000000000000000000000000000000000008888)
...@@ -1080,6 +1080,12 @@ sata.reg_status() ...@@ -1080,6 +1080,12 @@ sata.reg_status()
_=mem.mem_dump (0x80000ff0, 4,4) _=mem.mem_dump (0x80000ff0, 4,4)
sata.reg_status(),sata.reset_ie(),sata.err_count() sata.reg_status(),sata.reset_ie(),sata.err_count()
_=mem.mem_dump (0x80000ff0, 4,4)
_=mem.mem_dump (0x80001000, 0x120,4)
for block in range (1,1024): for block in range (1,1024):
print("\n======== Reading block %d ==============="%block) print("\n======== Reading block %d ==============="%block)
sata.arm_logger() sata.arm_logger()
......
...@@ -416,7 +416,7 @@ top dut( ...@@ -416,7 +416,7 @@ top dut(
assign device_rst = dut.axi_rst; assign device_rst = dut.axi_rst;
sata_device dev( sata_device dev(
.rst (device_rst), .rst (1'b1), // FOREVER device_rst),
.RXN (txn), .RXN (txn),
.RXP (txp), .RXP (txp),
.TXN (rxn), .TXN (rxn),
...@@ -1284,7 +1284,11 @@ initial begin //Host ...@@ -1284,7 +1284,11 @@ initial begin //Host
maxigp1_print ('h1014,"DATASCOPE 5"); // maxigp1_print ('h1014,"DATASCOPE 5"); //
maxigp1_print ('h1018,"DATASCOPE 6"); // maxigp1_print ('h1018,"DATASCOPE 6"); //
maxigp1_print ('h101c,"DATASCOPE 7"); // maxigp1_print ('h101c,"DATASCOPE 7"); //
// Reset HBA
maxigp1_writep (GHC__GHC__HR__ADDR << 2, 1); // Reset HBA
#12000;
@(posedge CLK);
maxigp1_print (GHC__GHC__HR__ADDR << 2,"GHC__GHC__HR__ADDR after pause");
/* /*
// Reset port // Reset port
maxigp1_print ('h3ff << 2,"DEBUG_REGISTER"); maxigp1_print ('h3ff << 2,"DEBUG_REGISTER");
...@@ -1394,7 +1398,7 @@ end ...@@ -1394,7 +1398,7 @@ end
initial begin initial begin
// #30000; // #30000;
#70000; #100000;
// #29630; // #29630;
// #30000; // #30000;
// #250000; // #250000;
......
[*] [*]
[*] GTKWave Analyzer v3.3.66 (w)1999-2015 BSI [*] GTKWave Analyzer v3.3.66 (w)1999-2015 BSI
[*] Thu Feb 18 00:25:28 2016 [*] Mon Feb 22 22:05:23 2016
[*] [*]
[dumpfile] "/home/andrey/git/x393_sata/simulation/tb_ahci-20160217160046559.fst" [dumpfile] "/home/andrey/git/x393_sata/simulation/tb_ahci-20160222132932478.fst"
[dumpfile_mtime] "Wed Feb 17 23:02:18 2016" [dumpfile_mtime] "Mon Feb 22 20:31:27 2016"
[dumpfile_size] 10746491 [dumpfile_size] 14406416
[savefile] "/home/andrey/git/x393_sata/tb_ahci_01.sav" [savefile] "/home/andrey/git/x393_sata/tb_ahci_01.sav"
[timestart] 49759600 [timestart] 48630000
[size] 1823 1180 [size] 1823 1180
[pos] 2026 0 [pos] 2026 0
*-14.446142 49823334 29549854 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 *-23.135801 73732102 62346574 72998842 74025406 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
[treeopen] tb_ahci. [treeopen] tb_ahci.
[treeopen] tb_ahci.axi_read_addr. [treeopen] tb_ahci.axi_read_addr.
[treeopen] tb_ahci.dev.linkMonitorFIS. [treeopen] tb_ahci.dev.linkMonitorFIS.
...@@ -28,9 +28,9 @@ ...@@ -28,9 +28,9 @@
[treeopen] tb_ahci.dut.sata_top.ahci_sata_layers_i.link. [treeopen] tb_ahci.dut.sata_top.ahci_sata_layers_i.link.
[treeopen] tb_ahci.dut.sata_top.ahci_sata_layers_i.link.crc. [treeopen] tb_ahci.dut.sata_top.ahci_sata_layers_i.link.crc.
[treeopen] tb_ahci.dut.sata_top.ahci_sata_layers_i.link.scrambler. [treeopen] tb_ahci.dut.sata_top.ahci_sata_layers_i.link.scrambler.
[treeopen] tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.
[treeopen] tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.gtx_wrap. [treeopen] tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.gtx_wrap.
[treeopen] tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.gtx_wrap.genblk1. [treeopen] tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.gtx_wrap.genblk1.
[treeopen] tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.gtx_wrap.gtxe2_channel_wrapper.
[treeopen] tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.gtx_wrap.gtxe2_channel_wrapper.gtx_gpl. [treeopen] tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.gtx_wrap.gtxe2_channel_wrapper.gtx_gpl.
[treeopen] tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.gtx_wrap.gtxe2_channel_wrapper.gtx_gpl.channel. [treeopen] tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.gtx_wrap.gtxe2_channel_wrapper.gtx_gpl.channel.
[treeopen] tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.gtx_wrap.gtxe2_channel_wrapper.gtx_gpl.channel.rx. [treeopen] tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.gtx_wrap.gtxe2_channel_wrapper.gtx_gpl.channel.rx.
...@@ -38,6 +38,7 @@ ...@@ -38,6 +38,7 @@
[treeopen] tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.gtx_wrap.gtxe2_channel_wrapper.gtx_gpl.channel.tx. [treeopen] tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.gtx_wrap.gtxe2_channel_wrapper.gtx_gpl.channel.tx.
[treeopen] tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.gtx_wrap.sipo_to_xclk_measure_i. [treeopen] tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.gtx_wrap.sipo_to_xclk_measure_i.
[treeopen] tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.oob_ctrl. [treeopen] tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.oob_ctrl.
[treeopen] tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.oob_ctrl.oob.
[treeopen] tb_ahci.dut.sata_top.ahci_top_i. [treeopen] tb_ahci.dut.sata_top.ahci_top_i.
[treeopen] tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i. [treeopen] tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.
[treeopen] tb_ahci.dut.sata_top.ahci_top_i.ahci_dma_i. [treeopen] tb_ahci.dut.sata_top.ahci_top_i.ahci_dma_i.
...@@ -59,8 +60,8 @@ ...@@ -59,8 +60,8 @@
[treeopen] tb_ahci.simul_axi_hp_wr_i.waddr_i. [treeopen] tb_ahci.simul_axi_hp_wr_i.waddr_i.
[treeopen] tb_ahci.simul_axi_hp_wr_i.wdata_i. [treeopen] tb_ahci.simul_axi_hp_wr_i.wdata_i.
[treeopen] tb_ahci.simul_axi_read_i. [treeopen] tb_ahci.simul_axi_read_i.
[sst_width] 296 [sst_width] 368
[signals_width] 341 [signals_width] 322
[sst_expanded] 1 [sst_expanded] 1
[sst_vpaned_height] 573 [sst_vpaned_height] 573
@820 @820
...@@ -777,10 +778,8 @@ tb_ahci.dut.sata_top.ahci_top_i.axi_ahci_regs_i.bram_addr[9:0] ...@@ -777,10 +778,8 @@ tb_ahci.dut.sata_top.ahci_top_i.axi_ahci_regs_i.bram_addr[9:0]
@28 @28
tb_ahci.dut.sata_top.ahci_top_i.axi_ahci_regs_i.aclk tb_ahci.dut.sata_top.ahci_top_i.axi_ahci_regs_i.aclk
tb_ahci.dut.sata_top.ahci_top_i.axi_ahci_regs_i.axibram_read_i.dev_ready tb_ahci.dut.sata_top.ahci_top_i.axi_ahci_regs_i.axibram_read_i.dev_ready
@c00200 @22
-tb_ahci.dut.sata_top.ahci_top_i.axi_ahci_regs_i.bram_raddr tb_ahci.dut.sata_top.ahci_top_i.axi_ahci_regs_i.axibram_read_i.bram_raddr[11:0]
@1401200
-group_end
@800028 @800028
tb_ahci.dut.sata_top.ahci_top_i.axi_ahci_regs_i.bram_ren[1:0] tb_ahci.dut.sata_top.ahci_top_i.axi_ahci_regs_i.bram_ren[1:0]
@28 @28
...@@ -791,6 +790,9 @@ tb_ahci.dut.sata_top.ahci_top_i.axi_ahci_regs_i.bram_ren[1:0] ...@@ -791,6 +790,9 @@ tb_ahci.dut.sata_top.ahci_top_i.axi_ahci_regs_i.bram_ren[1:0]
@22 @22
tb_ahci.dut.sata_top.ahci_top_i.axi_ahci_regs_i.bram_rdata_r[31:0] tb_ahci.dut.sata_top.ahci_top_i.axi_ahci_regs_i.bram_rdata_r[31:0]
tb_ahci.dut.sata_top.ahci_top_i.axi_ahci_regs_i.axibram_read_i.bram_rdata[31:0] tb_ahci.dut.sata_top.ahci_top_i.axi_ahci_regs_i.axibram_read_i.bram_rdata[31:0]
tb_ahci.dut.sata_top.ahci_top_i.axi_ahci_regs_i.hba_reset_cntr[8:0]
@28
tb_ahci.dut.sata_top.ahci_top_i.axi_ahci_regs_i.hba_rst_r
@200 @200
- -
@28 @28
...@@ -1241,28 +1243,9 @@ tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.serr[31:0] ...@@ -1241,28 +1243,9 @@ tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.serr[31:0]
@28 @28
tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.pxci0_clear tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.pxci0_clear
tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.pxci_changed tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.pxci_changed
@c00022 @22
tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.regs_changed[5:0] tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.regs_changed[6:0]
@28 tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.update_first[6:0]
(0)tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.regs_changed[5:0]
(1)tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.regs_changed[5:0]
(2)tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.regs_changed[5:0]
(3)tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.regs_changed[5:0]
(4)tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.regs_changed[5:0]
(5)tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.regs_changed[5:0]
@1401200
-group_end
@c00022
tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.update_first[5:0]
@28
(0)tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.update_first[5:0]
(1)tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.update_first[5:0]
(2)tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.update_first[5:0]
(3)tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.update_first[5:0]
(4)tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.update_first[5:0]
(5)tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.update_first[5:0]
@1401200
-group_end
@200 @200
- -
@22 @22
...@@ -1381,6 +1364,8 @@ tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.PxIS_r[31:0] ...@@ -1381,6 +1364,8 @@ tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.PxIS_r[31:0]
@28 @28
tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.pxci0_clear tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.pxci0_clear
tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.swr_HBA_PORT__PxCI tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.swr_HBA_PORT__PxCI
tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.swr_HBA_PORT__PxCMD
tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.swr_GHC__GHC
tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.pxci0 tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.pxci0
tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.pxci_changed tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.pxci_changed
@c00022 @c00022
...@@ -1465,10 +1450,11 @@ tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.soft_write_data[31:0] ...@@ -1465,10 +1450,11 @@ tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.soft_write_data[31:0]
-group_end -group_end
@28 @28
tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.set_ghc_is_r tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.set_ghc_is_r
tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.ghc_ie_r
tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.ghc_is_r tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.ghc_is_r
tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.sirq_changed tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.sirq_changed
tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.irq tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.irq
tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.GHC_r[1:0]
tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.update_GHC_GHC
@c00200 @c00200
-ssts -ssts
@c00022 @c00022
...@@ -1603,6 +1589,13 @@ tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.gtx_wrap.gtxe2_channel_wrapper.gtx_g ...@@ -1603,6 +1589,13 @@ tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.gtx_wrap.gtxe2_channel_wrapper.gtx_g
@c00200 @c00200
-ahci_fsm -ahci_fsm
@28 @28
tb_ahci.dut.sata_top.ahci_top_i.hba_arst
tb_ahci.dut.sata_top.ahci_top_i.hba_rst_done
tb_ahci.dut.sata_top.ahci_top_i.was_port_rst
tb_ahci.dut.sata_top.ahci_top_i.was_hba_rst
@200
-
@28
tb_ahci.dut.sata_top.ahci_top_i.ahci_fsm_i.dma_abort_done tb_ahci.dut.sata_top.ahci_top_i.ahci_fsm_i.dma_abort_done
tb_ahci.dut.sata_top.ahci_top_i.ahci_fsm_i.pcmd_st_cleared tb_ahci.dut.sata_top.ahci_top_i.ahci_fsm_i.pcmd_st_cleared
tb_ahci.dut.sata_top.ahci_top_i.ahci_fsm_i.asynq_rq tb_ahci.dut.sata_top.ahci_top_i.ahci_fsm_i.asynq_rq
...@@ -1969,7 +1962,7 @@ tb_ahci.dut.sata_top.ahci_top_i.ahci_fis_receive_i.fis_dcount[3:0] ...@@ -1969,7 +1962,7 @@ tb_ahci.dut.sata_top.ahci_top_i.ahci_fis_receive_i.fis_dcount[3:0]
-group_end -group_end
@1401200 @1401200
-ahci_fis_receive -ahci_fis_receive
@800200 @c00200
-ahci_fis_transmit -ahci_fis_transmit
@28 @28
tb_ahci.dut.sata_top.ahci_top_i.ahci_fis_transmit_i.xmit_ok tb_ahci.dut.sata_top.ahci_top_i.ahci_fis_transmit_i.xmit_ok
...@@ -2034,6 +2027,97 @@ tb_ahci.dut.sata_top.ahci_top_i.ahci_fis_transmit_i.todev_valid ...@@ -2034,6 +2027,97 @@ tb_ahci.dut.sata_top.ahci_top_i.ahci_fis_transmit_i.todev_valid
@1000200 @1000200
-todev -todev
@28 @28
tb_ahci.dut.sata_top.ahci_top_i.ahci_fis_transmit_i.acfis_xmit_busy_r
tb_ahci.dut.sata_top.ahci_top_i.ahci_fis_transmit_i.ct_re_w
@22
tb_ahci.dut.sata_top.ahci_top_i.ahci_fis_transmit_i.cfis_acmd_left_r[4:0]
@28
tb_ahci.dut.sata_top.ahci_top_i.ahci_fis_transmit_i.cfis_xmit
@22
tb_ahci.dut.sata_top.ahci_top_i.ahci_fis_transmit_i.ch_cmd_len_r[4:0]
tb_ahci.dut.sata_top.ahci_top_i.ahci_fis_transmit_i.fetch_chead_stb_r[3:0]
tb_ahci.dut.sata_top.ahci_top_i.ahci_fis_transmit_i.reg_addr[9:0]
@c00028
tb_ahci.dut.sata_top.ahci_top_i.ahci_fis_transmit_i.reg_re[1:0]
@28
(0)tb_ahci.dut.sata_top.ahci_top_i.ahci_fis_transmit_i.reg_re[1:0]
(1)tb_ahci.dut.sata_top.ahci_top_i.ahci_fis_transmit_i.reg_re[1:0]
@1401200
-group_end
@22
tb_ahci.dut.sata_top.ahci_top_i.ahci_fis_transmit_i.reg_rdata[31:0]
tb_ahci.dut.sata_top.ahci_top_i.ahci_fis_transmit_i.ct_addr[4:0]
@28
tb_ahci.dut.sata_top.ahci_top_i.ahci_fis_transmit_i.ct_re[1:0]
@22
tb_ahci.dut.sata_top.ahci_top_i.ahci_fis_transmit_i.ct_data[31:0]
tb_ahci.setup_pio_read_identify_command_simple.data_len
tb_ahci.setup_pio_read_identify_command_simple.i
tb_ahci.setup_pio_read_identify_command_simple.prd_int
@28
tb_ahci.dut.sata_top.ahci_top_i.axi_ahci_regs_i.hba_we
@c00022
tb_ahci.dut.sata_top.ahci_top_i.axi_ahci_regs_i.hba_addr[9:0]
@28
(0)tb_ahci.dut.sata_top.ahci_top_i.axi_ahci_regs_i.hba_addr[9:0]
(1)tb_ahci.dut.sata_top.ahci_top_i.axi_ahci_regs_i.hba_addr[9:0]
(2)tb_ahci.dut.sata_top.ahci_top_i.axi_ahci_regs_i.hba_addr[9:0]
(3)tb_ahci.dut.sata_top.ahci_top_i.axi_ahci_regs_i.hba_addr[9:0]
(4)tb_ahci.dut.sata_top.ahci_top_i.axi_ahci_regs_i.hba_addr[9:0]
(5)tb_ahci.dut.sata_top.ahci_top_i.axi_ahci_regs_i.hba_addr[9:0]
(6)tb_ahci.dut.sata_top.ahci_top_i.axi_ahci_regs_i.hba_addr[9:0]
(7)tb_ahci.dut.sata_top.ahci_top_i.axi_ahci_regs_i.hba_addr[9:0]
(8)tb_ahci.dut.sata_top.ahci_top_i.axi_ahci_regs_i.hba_addr[9:0]
(9)tb_ahci.dut.sata_top.ahci_top_i.axi_ahci_regs_i.hba_addr[9:0]
@1401200
-group_end
@22
tb_ahci.dut.sata_top.ahci_top_i.axi_ahci_regs_i.hba_dout[31:0]
@28
tb_ahci.dut.sata_top.ahci_top_i.regs_we_freceive
tb_ahci.dut.sata_top.ahci_top_i.regs_re_ftransmit[1:0]
tb_ahci.dut.sata_top.ahci_top_i.regs_we_acs
tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.update_busy
tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.update_pending
tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.update_GHC_GHC
tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.update_GHC__IS
tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.update_ghc
@800022
tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.update_first[6:0]
@28
(0)tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.update_first[6:0]
(1)tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.update_first[6:0]
(2)tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.update_first[6:0]
(3)tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.update_first[6:0]
(4)tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.update_first[6:0]
(5)tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.update_first[6:0]
(6)tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.update_first[6:0]
@1001200
-group_end
@800022
tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.update_next[6:1]
@28
(0)tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.update_next[6:1]
(1)tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.update_next[6:1]
(2)tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.update_next[6:1]
(3)tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.update_next[6:1]
(4)tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.update_next[6:1]
(5)tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.update_next[6:1]
@800022
tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.updating[6:1]
@28
(0)tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.updating[6:1]
(1)tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.updating[6:1]
(2)tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.updating[6:1]
(3)tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.updating[6:1]
(4)tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.updating[6:1]
(5)tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.updating[6:1]
@1001200
-group_end
-group_end
@200
-
@28
tb_ahci.dut.sata_top.ahci_top_i.ahci_fis_transmit_i.write_or_w tb_ahci.dut.sata_top.ahci_top_i.ahci_fis_transmit_i.write_or_w
tb_ahci.dut.sata_top.ahci_top_i.ahci_fis_transmit_i.todev_full_r tb_ahci.dut.sata_top.ahci_top_i.ahci_fis_transmit_i.todev_full_r
tb_ahci.dut.sata_top.ahci_top_i.ahci_fis_transmit_i.hba_rst tb_ahci.dut.sata_top.ahci_top_i.ahci_fis_transmit_i.hba_rst
...@@ -2129,7 +2213,7 @@ tb_ahci.dut.sata_top.ahci_top_i.ahci_dma_i.prd_rd ...@@ -2129,7 +2213,7 @@ tb_ahci.dut.sata_top.ahci_top_i.ahci_dma_i.prd_rd
tb_ahci.dut.sata_top.ahci_top_i.ahci_dma_i.data_addr[31:1] tb_ahci.dut.sata_top.ahci_top_i.ahci_dma_i.data_addr[31:1]
@1001200 @1001200
-group_end -group_end
@1000200 @1401200
-ahci_fis_transmit -ahci_fis_transmit
@c00200 @c00200
-ahci_sata_layers -ahci_sata_layers
...@@ -2327,7 +2411,7 @@ tb_ahci.simul_axi_hp_wr_i.wdata_i.fill[7:0] ...@@ -2327,7 +2411,7 @@ tb_ahci.simul_axi_hp_wr_i.wdata_i.fill[7:0]
-fifo_wdata -fifo_wdata
@1401200 @1401200
-simul_axi_hp_wr -simul_axi_hp_wr
@800200 @c00200
-ahci_dma -ahci_dma
@28 @28
tb_ahci.dut.sata_top.ahci_top_i.ahci_dma_i.addr_data_rq_w tb_ahci.dut.sata_top.ahci_top_i.ahci_dma_i.addr_data_rq_w
...@@ -2658,9 +2742,8 @@ tb_ahci.dut.sata_top.ahci_top_i.ahci_dma_i.prd_rd ...@@ -2658,9 +2742,8 @@ tb_ahci.dut.sata_top.ahci_top_i.ahci_dma_i.prd_rd
- -
@28 @28
tb_ahci.dut.sata_top.ahci_top_i.ahci_dma_i.ahci_dma_rd_fifo_i.start tb_ahci.dut.sata_top.ahci_top_i.ahci_dma_i.ahci_dma_rd_fifo_i.start
@23
tb_ahci.dut.sata_top.ahci_top_i.ahci_dma_i.ahci_dma_rd_fifo_i.wcnt[20:0]
@22 @22
tb_ahci.dut.sata_top.ahci_top_i.ahci_dma_i.ahci_dma_rd_fifo_i.wcnt[20:0]
tb_ahci.dut.sata_top.ahci_top_i.ahci_dma_i.ahci_dma_rd_fifo_i.last_mask[3:0] tb_ahci.dut.sata_top.ahci_top_i.ahci_dma_i.ahci_dma_rd_fifo_i.last_mask[3:0]
@28 @28
tb_ahci.dut.sata_top.ahci_top_i.ahci_dma_i.ahci_dma_rd_fifo_i.last_fifo_wr tb_ahci.dut.sata_top.ahci_top_i.ahci_dma_i.ahci_dma_rd_fifo_i.last_fifo_wr
...@@ -3508,7 +3591,7 @@ tb_ahci.simul_axi_hp_rd_i.rdata_i.out_full ...@@ -3508,7 +3591,7 @@ tb_ahci.simul_axi_hp_rd_i.rdata_i.out_full
-top -top
@200 @200
- -
@1000200 @1401200
-ahci_dma -ahci_dma
@c00200 @c00200
-datascope0 -datascope0
...@@ -3557,7 +3640,7 @@ tb_ahci.dut.sata_top.ahci_top_i.datascope_di[31:0] ...@@ -3557,7 +3640,7 @@ tb_ahci.dut.sata_top.ahci_top_i.datascope_di[31:0]
- -
@1401200 @1401200
-datascope0 -datascope0
@800200 @c00200
-link -link
@28 @28
tb_ahci.dut.sata_top.ahci_sata_layers_i.link.scrambler.rst tb_ahci.dut.sata_top.ahci_sata_layers_i.link.scrambler.rst
...@@ -4056,9 +4139,9 @@ tb_ahci.dut.sata_top.ahci_sata_layers_i.link.alignes_pair ...@@ -4056,9 +4139,9 @@ tb_ahci.dut.sata_top.ahci_sata_layers_i.link.alignes_pair
tb_ahci.dut.sata_top.ahci_sata_layers_i.link.frame_req tb_ahci.dut.sata_top.ahci_sata_layers_i.link.frame_req
tb_ahci.dut.sata_top.ahci_sata_layers_i.link.frame_ack tb_ahci.dut.sata_top.ahci_sata_layers_i.link.frame_ack
tb_ahci.dut.sata_top.ahci_sata_layers_i.link.frame_busy tb_ahci.dut.sata_top.ahci_sata_layers_i.link.frame_busy
@1000200 @1401200
-link -link
@c00200 @c00201
-phy -phy
@800200 @800200
-gtx_8x10enc -gtx_8x10enc
...@@ -4226,6 +4309,7 @@ tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.gtx_wrap.gtxe2_channel_wrapper.gtx_g ...@@ -4226,6 +4309,7 @@ tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.gtx_wrap.gtxe2_channel_wrapper.gtx_g
tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.gtx_wrap.gtxe2_channel_wrapper.gtx_gpl.channel.rx.dataiface.wordcounter[31:0] tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.gtx_wrap.gtxe2_channel_wrapper.gtx_gpl.channel.rx.dataiface.wordcounter[31:0]
@1401200 @1401200
-GTXE2_GPL -GTXE2_GPL
@1401201
-phy -phy
@c00200 @c00200
-comma -comma
...@@ -4435,7 +4519,46 @@ tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.gtx_wrap.gtx_comma_align.shifted_win ...@@ -4435,7 +4519,46 @@ tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.gtx_wrap.gtx_comma_align.shifted_win
tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.gtx_wrap.gtx_comma_align.window[38:0] tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.gtx_wrap.gtx_comma_align.window[38:0]
@1401200 @1401200
-comma_align -comma_align
@c00200 @800200
-debug_cominit
@200
-
@22
tb_ahci.dut.sata_top.ahci_top_i.ahci_ctrl_stat_i.PxSSTS_r[11:0]
@28
tb_ahci.dut.sata_top.ahci_top_i.cominit_got
tb_ahci.dut.sata_top.ahci_top_i.comreset_send
@1000200
-debug_cominit
@800200
-debug_hba_reset
@28
tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.gtx_wrap.gtxe2_channel_wrapper.gtx_gpl.reset
tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.gtx_wrap.gtxe2_channel_wrapper.gtx_gpl.RXOOBRESET
tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.gtx_wrap.gtxe2_channel_wrapper.gtx_gpl.GTRXRESET
@200
-
@28
tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.gtx_wrap.gtxe2_channel_wrapper.gtx_gpl.clk_reset
tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.gtx_wrap.gtxe2_channel_wrapper.gtx_gpl.RXRESETDONE
tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.rxuserrdy
tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.rxreset
tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.txresetdone
tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.rxresetdone
tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.txuserrdy
tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.gtx_ready
tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.sata_reset_done
tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.rxeyereset_done
tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.rxreset
tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.txpmareset_done
tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.usrpll_locked
@200
-
@28
tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.gtx_wrap.rxresetdone_gtx
@1000200
-debug_hba_reset
@800200
-oob_ctrl -oob_ctrl
@28 @28
tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.oob_ctrl.gtx_ready tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.oob_ctrl.gtx_ready
...@@ -4443,11 +4566,15 @@ tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.oob_ctrl.oob.rxcominitdet_in ...@@ -4443,11 +4566,15 @@ tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.oob_ctrl.oob.rxcominitdet_in
tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.oob_ctrl.oob.rxcominitdet tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.oob_ctrl.oob.rxcominitdet
tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.oob_ctrl.oob.rxcominit_done tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.oob_ctrl.oob.rxcominit_done
tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.oob_ctrl.oob.rxcominitdet_l tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.oob_ctrl.oob.rxcominitdet_l
tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.oob_ctrl.gtx_ready
@200 @200
- -
@800200 @800200
-oob -oob
@28
tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.oob_ctrl.oob.txelecidle
tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.oob_ctrl.oob.txcominit
tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.oob_ctrl.oob.txcomwake
@800200
-states -states
@28 @28
tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.oob_ctrl.oob.state_idle tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.oob_ctrl.oob.state_idle
...@@ -4472,15 +4599,10 @@ tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.phy_ready ...@@ -4472,15 +4599,10 @@ tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.phy_ready
tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.dbg_clk_align_cntr[15:0] tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.dbg_clk_align_cntr[15:0]
@1000200 @1000200
-states -states
@c00200
-tb_ahci.dut.sata_top.ahci_sata_layers_i.debug_sata
@1401200
-group_end
@200 @200
- -
@1000200 @1000200
-oob -oob
@1401200
-oob_ctrl -oob_ctrl
@c00200 @c00200
-sipo_meas -sipo_meas
...@@ -4570,8 +4692,9 @@ tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.gtx_wrap.txreset ...@@ -4570,8 +4692,9 @@ tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.gtx_wrap.txreset
tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.gtx_wrap.rxreset tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.gtx_wrap.rxreset
@1401200 @1401200
-sipo_meas -sipo_meas
@c00200 @800200
-gtx -gtx
@c00200
-elastic -elastic
@22 @22
tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.gtx_wrap.elastic1632_i.dbg_di[31:0] tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.gtx_wrap.elastic1632_i.dbg_di[31:0]
...@@ -4694,6 +4817,7 @@ tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.gtx_wrap.txdata_enc_out[19:0] ...@@ -4694,6 +4817,7 @@ tb_ahci.dut.sata_top.ahci_sata_layers_i.phy.gtx_wrap.txdata_enc_out[19:0]
- -
@1401200 @1401200
-gtx8x10enc -gtx8x10enc
@1000200
-gtx -gtx
@c00200 @c00200
-device -device
...@@ -4748,7 +4872,7 @@ tb_ahci.dev.phy.gtx_wrapper.gtx_gpl.channel.tx.TXN ...@@ -4748,7 +4872,7 @@ tb_ahci.dev.phy.gtx_wrapper.gtx_gpl.channel.tx.TXN
tb_ahci.dev.linkSendPrim.type[111:0] tb_ahci.dev.linkSendPrim.type[111:0]
@1401200 @1401200
-device -device
@c00200 @800200
-datascope -datascope
@200 @200
- -
...@@ -4836,13 +4960,35 @@ tb_ahci.dut.sata_top.ahci_top_i.datascope_di[31:0] ...@@ -4836,13 +4960,35 @@ tb_ahci.dut.sata_top.ahci_top_i.datascope_di[31:0]
(31)tb_ahci.dut.sata_top.ahci_top_i.datascope_di[31:0] (31)tb_ahci.dut.sata_top.ahci_top_i.datascope_di[31:0]
@1401200 @1401200
-group_end -group_end
@22 @800022
tb_ahci.dut.sata_top.ahci_top_i.datascope_run[1:0] tb_ahci.dut.sata_top.ahci_top_i.datascope_run[1:0]
@28
(0)tb_ahci.dut.sata_top.ahci_top_i.datascope_run[1:0]
(1)tb_ahci.dut.sata_top.ahci_top_i.datascope_run[1:0]
@1001200
-group_end
@22
tb_ahci.dut.sata_top.ahci_top_i.datascope_waddr[9:0] tb_ahci.dut.sata_top.ahci_top_i.datascope_waddr[9:0]
@c00022
tb_ahci.dut.sata_top.ahci_top_i.datascope_waddr_r[9:0] tb_ahci.dut.sata_top.ahci_top_i.datascope_waddr_r[9:0]
@28 @28
tb_ahci.dut.sata_top.ahci_top_i.datascope_we (0)tb_ahci.dut.sata_top.ahci_top_i.datascope_waddr_r[9:0]
(1)tb_ahci.dut.sata_top.ahci_top_i.datascope_waddr_r[9:0]
(2)tb_ahci.dut.sata_top.ahci_top_i.datascope_waddr_r[9:0]
(3)tb_ahci.dut.sata_top.ahci_top_i.datascope_waddr_r[9:0]
(4)tb_ahci.dut.sata_top.ahci_top_i.datascope_waddr_r[9:0]
(5)tb_ahci.dut.sata_top.ahci_top_i.datascope_waddr_r[9:0]
(6)tb_ahci.dut.sata_top.ahci_top_i.datascope_waddr_r[9:0]
(7)tb_ahci.dut.sata_top.ahci_top_i.datascope_waddr_r[9:0]
(8)tb_ahci.dut.sata_top.ahci_top_i.datascope_waddr_r[9:0]
(9)tb_ahci.dut.sata_top.ahci_top_i.datascope_waddr_r[9:0]
@1401200 @1401200
-group_end
@28
tb_ahci.dut.sata_top.ahci_top_i.datascope_we
@22
tb_ahci.dut.sata_top.ahci_top_i.datascope_waddr[9:0]
@1000200
-datascope -datascope
@c00200 @c00200
-frequency_meter -frequency_meter
......
...@@ -3005,21 +3005,22 @@ always @ (posedge DRPCLK) begin ...@@ -3005,21 +3005,22 @@ always @ (posedge DRPCLK) begin
if (DRPEN) drp_raddr <= DRPADDR; if (DRPEN) drp_raddr <= DRPADDR;
end end
wire reset_or_GTRXRESET = reset || GTRXRESET;
initial initial
forever @ (posedge reset) forever @ (posedge reset_or_GTRXRESET)
begin begin
tx_rst_done <= 1'b0; tx_rst_done <= 1'b0;
@ (negedge reset); @ (negedge reset_or_GTRXRESET);
repeat (80) repeat (80)
@ (posedge GTREFCLK0); @ (posedge GTREFCLK0);
tx_rst_done <= 1'b1; tx_rst_done <= 1'b1;
end end
initial initial
forever @ (posedge reset) forever @ (posedge reset_or_GTRXRESET)
begin begin
rx_rst_done <= 1'b0; rx_rst_done <= 1'b0;
@ (negedge reset); @ (negedge reset_or_GTRXRESET);
repeat (100) repeat (100)
@ (posedge GTREFCLK0); @ (posedge GTREFCLK0);
rx_rst_done <= 1'b1; rx_rst_done <= 1'b1;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment