[top] Integrate latest ast and remove ast_wrapper

Signed-off-by: Timothy Chen <timothytim@google.com>

[top] Various fixes for ast connection

Signed-off-by: Timothy Chen <timothytim@google.com>

[top] Add missing core file

Signed-off-by: Timothy Chen <timothytim@google.com>

[top] Various fixes for other top levels

Signed-off-by: Timothy Chen <timothytim@google.com>

[top] various connectivity fixes

Signed-off-by: Timothy Chen <timothytim@google.com>

[top] complete removal of ast_wrapper

Signed-off-by: Timothy Chen <timothytim@google.com>

[top] fix englishbreakfast syntax error

Signed-off-by: Timothy Chen <timothytim@google.com>

[top] fix typo

Signed-off-by: Timothy Chen <timothytim@google.com>

[top] Auto generate files

Signed-off-by: Timothy Chen <timothytim@google.com>
diff --git a/hw/ip/flash_ctrl/rtl/flash_phy.sv b/hw/ip/flash_ctrl/rtl/flash_phy.sv
index 9de316f..3c78579 100644
--- a/hw/ip/flash_ctrl/rtl/flash_phy.sv
+++ b/hw/ip/flash_ctrl/rtl/flash_phy.sv
@@ -241,6 +241,10 @@
     .lc_en_o(lc_nvm_debug_en)
   );
 
+  lc_ctrl_pkg::lc_tx_t bist_enable_qual;
+  assign bist_enable_qual = lc_ctrl_pkg::lc_tx_t'(flash_bist_enable_i &
+                            lc_nvm_debug_en[FlashBistSel]);
+
   prim_flash #(
     .NumBanks(NumBanks),
     .InfosPerBank(InfosPerBank),
@@ -264,7 +268,7 @@
     .tdi_i(jtag_req_i.tdi & (lc_nvm_debug_en[FlashLcTdiSel] == lc_ctrl_pkg::On)),
     .tms_i(jtag_req_i.tms & (lc_nvm_debug_en[FlashLcTmsSel] == lc_ctrl_pkg::On)),
     .tdo_o(tdo),
-    .bist_enable_i(flash_bist_enable_i & lc_nvm_debug_en[FlashBistSel]),
+    .bist_enable_i(bist_enable_qual),
     .scanmode_i,
     .scan_en_i,
     .scan_rst_ni,
diff --git a/hw/ip/pwrmgr/rtl/pwrmgr_pkg.sv b/hw/ip/pwrmgr/rtl/pwrmgr_pkg.sv
index 532dbbb..21fab8f 100644
--- a/hw/ip/pwrmgr/rtl/pwrmgr_pkg.sv
+++ b/hw/ip/pwrmgr/rtl/pwrmgr_pkg.sv
@@ -16,11 +16,11 @@
   // variables referenced only by pwrmgr
   localparam int TotalWakeWidth = pwrmgr_reg_pkg::NumWkups + 2; // Abort and fall through are added
 
-  // The following structs should eventually be relocted to other modules
-  typedef enum logic [1:0] {
-    DiffValid = 2'b10,
-    DiffInvalid = 2'b01
-  } pwrmgr_diff_e;
+  //// The following structs should eventually be relocted to other modules
+  //typedef enum logic [1:0] {
+  //  DiffValid = 2'b10,
+  //  DiffInvalid = 2'b01
+  //} pwrmgr_diff_e;
 
   // pwrmgr to ast
   typedef struct packed {
@@ -33,27 +33,27 @@
   } pwr_ast_req_t;
 
   typedef struct packed {
-    pwrmgr_diff_e slow_clk_val;
-    pwrmgr_diff_e core_clk_val;
-    pwrmgr_diff_e io_clk_val;
-    pwrmgr_diff_e usb_clk_val;
+    logic slow_clk_val;
+    logic core_clk_val;
+    logic io_clk_val;
+    logic usb_clk_val;
     logic main_pok;
   } pwr_ast_rsp_t;
 
   // default value of pwr_ast_rsp (for dangling ports)
   parameter pwr_ast_rsp_t PWR_AST_RSP_DEFAULT = '{
-    slow_clk_val: DiffValid,
-    core_clk_val: DiffValid,
-    io_clk_val: DiffValid,
-    usb_clk_val: DiffValid,
+    slow_clk_val: 1'b1,
+    core_clk_val: 1'b1,
+    io_clk_val: 1'b1,
+    usb_clk_val: 1'b1,
     main_pok: 1'b1
   };
 
   parameter pwr_ast_rsp_t PWR_AST_RSP_SYNC_DEFAULT = '{
-    slow_clk_val: DiffInvalid,
-    core_clk_val: DiffInvalid,
-    io_clk_val: DiffInvalid,
-    usb_clk_val: DiffInvalid,
+    slow_clk_val: 1'b0,
+    core_clk_val: 1'b0,
+    io_clk_val: 1'b0,
+    usb_clk_val: 1'b0,
     main_pok: 1'b0
   };
 
diff --git a/hw/ip/pwrmgr/rtl/pwrmgr_slow_fsm.sv b/hw/ip/pwrmgr/rtl/pwrmgr_slow_fsm.sv
index c8dc69e..243182c 100644
--- a/hw/ip/pwrmgr/rtl/pwrmgr_slow_fsm.sv
+++ b/hw/ip/pwrmgr/rtl/pwrmgr_slow_fsm.sv
@@ -55,15 +55,15 @@
 
   // all clocks sources are valid
   // if clocks (usb) not configured to be active, then just bypass check
-  assign all_clks_valid = (ast_i.core_clk_val == DiffValid) &
-     (ast_i.io_clk_val == DiffValid) &
-     (~usb_clk_en_active_i | ast_i.usb_clk_val == DiffValid);
+  assign all_clks_valid = ast_i.core_clk_val &
+                          ast_i.io_clk_val &
+                          (~usb_clk_en_active_i | ast_i.usb_clk_val);
 
   // if clocks were configured to turn off, make sure val is invalid
   // if clocks were not configured to turn off, just bypass the check
-  assign all_clks_invalid = (core_clk_en_i | ast_i.core_clk_val != DiffValid) &
-     (io_clk_en_i | ast_i.io_clk_val != DiffValid) &
-     (usb_clk_en_lp_i | ast_i.usb_clk_val != DiffValid);
+  assign all_clks_invalid = (core_clk_en_i | ~ast_i.core_clk_val) &
+                            (io_clk_en_i | ~ast_i.io_clk_val) &
+                            (usb_clk_en_lp_i | ~ast_i.usb_clk_val);
 
   always_ff @(posedge clk_i or negedge rst_ni) begin
     if (!rst_ni) begin
@@ -224,7 +224,7 @@
   ///  Unused
   ////////////////////////////
 
-  logic [1:0] unused_slow_clk_val;
+  logic unused_slow_clk_val;
   assign unused_slow_clk_val = ast_i.slow_clk_val;
 
 
diff --git a/hw/top_earlgrey/data/autogen/top_earlgrey.gen.hjson b/hw/top_earlgrey/data/autogen/top_earlgrey.gen.hjson
index 069b49b..9af4c52 100644
--- a/hw/top_earlgrey/data/autogen/top_earlgrey.gen.hjson
+++ b/hw/top_earlgrey/data/autogen/top_earlgrey.gen.hjson
@@ -3253,9 +3253,8 @@
           package: lc_ctrl_pkg
           inst_name: lc_ctrl
           width: 1
-          end_idx: -1
-          top_type: broadcast
-          top_signame: lc_ctrl_lc_clk_byp_req
+          external: true
+          top_signame: lc_clk_byp_req
           index: -1
         }
         {
@@ -4150,6 +4149,10 @@
           act: rcv
           package: lc_ctrl_pkg
           inst_name: clkmgr_aon
+          width: 1
+          default: ""
+          external: true
+          top_signame: lc_clk_byp_ack
           index: -1
         }
         {
@@ -4645,7 +4648,7 @@
           type: req_rsp
           name: ast_alert
           act: rsp
-          package: ast_wrapper_pkg
+          package: ast_pkg
           inst_name: sensor_ctrl_aon
           width: 1
           default: ""
@@ -4658,7 +4661,7 @@
           type: uni
           name: ast_status
           act: rcv
-          package: ast_wrapper_pkg
+          package: ast_pkg
           inst_name: sensor_ctrl_aon
           width: 1
           default: ""
@@ -6237,6 +6240,10 @@
       {
         rst_ni: rstmgr_aon_resets.rst_sys_n[rstmgr_pkg::Domain0Sel]
       }
+      clock_reset_export:
+      [
+        ast
+      ]
       base_addr: 0x41160000
       clock_connections:
       {
@@ -6330,6 +6337,10 @@
           act: req
           package: entropy_src_pkg
           inst_name: entropy_src
+          width: 1
+          default: ""
+          external: true
+          top_signame: es_rng
           index: -1
         }
         {
@@ -6378,6 +6389,10 @@
       {
         rst_ni: rstmgr_aon_resets.rst_sys_n[rstmgr_pkg::Domain0Sel]
       }
+      clock_reset_export:
+      [
+        ast
+      ]
       base_addr: 0x41170000
       clock_connections:
       {
@@ -7304,7 +7319,6 @@
       [
         otp_ctrl.lc_check_byp_en
       ]
-      lc_ctrl.lc_clk_byp_req: []
       lc_ctrl.lc_clk_byp_ack:
       [
         clkmgr_aon.lc_clk_bypass_ack
@@ -7532,6 +7546,9 @@
       eflash.flash_power_ready_h: flash_power_ready_h
       eflash.flash_test_mode_a: flash_test_mode_a
       eflash.flash_test_voltage_h: flash_test_voltage_h
+      entropy_src.entropy_src_rng: es_rng
+      lc_ctrl.lc_clk_byp_req: lc_clk_byp_req
+      clkmgr_aon.ast_clk_bypass_ack: lc_clk_byp_ack
       ast_edn.edn: ""
       clkmgr_aon.clocks_ast: clks_ast
       rstmgr_aon.resets_ast: rsts_ast
@@ -11618,6 +11635,14 @@
       [
         io_div4_secure
       ]
+      entropy_src:
+      [
+        main_secure
+      ]
+      edn0:
+      [
+        main_secure
+      ]
     }
   }
   wakeups:
@@ -11654,6 +11679,14 @@
       [
         sys_io_div4
       ]
+      entropy_src:
+      [
+        sys
+      ]
+      edn0:
+      [
+        sys
+      ]
     }
   }
   reset_paths:
@@ -12351,9 +12384,8 @@
         package: lc_ctrl_pkg
         inst_name: lc_ctrl
         width: 1
-        end_idx: -1
-        top_type: broadcast
-        top_signame: lc_ctrl_lc_clk_byp_req
+        external: true
+        top_signame: lc_clk_byp_req
         index: -1
       }
       {
@@ -12910,6 +12942,10 @@
         act: rcv
         package: lc_ctrl_pkg
         inst_name: clkmgr_aon
+        width: 1
+        default: ""
+        external: true
+        top_signame: lc_clk_byp_ack
         index: -1
       }
       {
@@ -13185,7 +13221,7 @@
         type: req_rsp
         name: ast_alert
         act: rsp
-        package: ast_wrapper_pkg
+        package: ast_pkg
         inst_name: sensor_ctrl_aon
         width: 1
         default: ""
@@ -13198,7 +13234,7 @@
         type: uni
         name: ast_status
         act: rcv
-        package: ast_wrapper_pkg
+        package: ast_pkg
         inst_name: sensor_ctrl_aon
         width: 1
         default: ""
@@ -13765,6 +13801,10 @@
         act: req
         package: entropy_src_pkg
         inst_name: entropy_src
+        width: 1
+        default: ""
+        external: true
+        top_signame: es_rng
         index: -1
       }
       {
@@ -14818,7 +14858,7 @@
         netname: pwrmgr_ast_rsp
       }
       {
-        package: ast_wrapper_pkg
+        package: ast_pkg
         struct: ast_alert_req
         signame: sensor_ctrl_ast_alert_req_i
         width: 1
@@ -14829,7 +14869,7 @@
         netname: sensor_ctrl_ast_alert_req
       }
       {
-        package: ast_wrapper_pkg
+        package: ast_pkg
         struct: ast_alert_rsp
         signame: sensor_ctrl_ast_alert_rsp_o
         width: 1
@@ -14840,7 +14880,7 @@
         netname: sensor_ctrl_ast_alert_rsp
       }
       {
-        package: ast_wrapper_pkg
+        package: ast_pkg
         struct: ast_status
         signame: sensor_ctrl_ast_status_i
         width: 1
@@ -14972,6 +15012,50 @@
         netname: flash_test_voltage_h
       }
       {
+        package: entropy_src_pkg
+        struct: entropy_src_rng_req
+        signame: es_rng_req_o
+        width: 1
+        type: req_rsp
+        default: ""
+        direction: out
+        index: -1
+        netname: es_rng_req
+      }
+      {
+        package: entropy_src_pkg
+        struct: entropy_src_rng_rsp
+        signame: es_rng_rsp_i
+        width: 1
+        type: req_rsp
+        default: ""
+        direction: in
+        index: -1
+        netname: es_rng_rsp
+      }
+      {
+        package: lc_ctrl_pkg
+        struct: lc_tx
+        signame: lc_clk_byp_req_o
+        width: 1
+        type: uni
+        default: lc_ctrl_pkg::Off
+        direction: out
+        index: -1
+        netname: lc_clk_byp_req
+      }
+      {
+        package: lc_ctrl_pkg
+        struct: lc_tx
+        signame: lc_clk_byp_ack_i
+        width: 1
+        type: uni
+        default: ""
+        direction: in
+        index: -1
+        netname: lc_clk_byp_ack
+      }
+      {
         package: edn_pkg
         struct: edn_req
         signame: ast_edn_edn_req_i
@@ -15648,17 +15732,6 @@
       {
         package: lc_ctrl_pkg
         struct: lc_tx
-        signame: lc_ctrl_lc_clk_byp_req
-        width: 1
-        type: uni
-        end_idx: -1
-        act: req
-        suffix: ""
-        default: lc_ctrl_pkg::Off
-      }
-      {
-        package: lc_ctrl_pkg
-        struct: lc_tx
         signame: lc_ctrl_lc_clk_byp_ack
         width: 1
         type: uni
diff --git a/hw/top_earlgrey/data/top_earlgrey.hjson b/hw/top_earlgrey/data/top_earlgrey.hjson
index 4641605..57e1c3f 100644
--- a/hw/top_earlgrey/data/top_earlgrey.hjson
+++ b/hw/top_earlgrey/data/top_earlgrey.hjson
@@ -484,6 +484,7 @@
       clock_srcs: {clk_i: "main"},
       clock_group: "secure",
       reset_connections: {rst_ni: "sys"},
+      clock_reset_export: ["ast"],
       base_addr: "0x41160000",
     },
     { name: "edn0",
@@ -491,6 +492,7 @@
       clock_srcs: {clk_i: "main"},
       clock_group: "secure",
       reset_connections: {rst_ni: "sys"},
+      clock_reset_export: ["ast"],
       base_addr: "0x41170000",
     },
     { name: "edn1",
@@ -750,7 +752,6 @@
 
       'lc_ctrl.lc_check_byp_en'    : ['otp_ctrl.lc_check_byp_en'],
       // TODO: OTP Clock bypass signal going from LC to AST/clkmgr
-      'lc_ctrl.lc_clk_byp_req'     : [],
       'lc_ctrl.lc_clk_byp_ack'     : ['clkmgr_aon.lc_clk_bypass_ack'],
 
       // LC access control signal broadcast
@@ -775,25 +776,28 @@
 
     // ext is to create port in the top.
     'external': {
-        'clkmgr_aon.clk_main': 'clk_main',  // clock inputs
-        'clkmgr_aon.clk_io': 'clk_io',      // clock inputs
-        'clkmgr_aon.clk_usb': 'clk_usb',    // clock inputs
-        'clkmgr_aon.clk_aon': 'clk_aon',    // clock inputs
-        'rstmgr_aon.ast': 'rstmgr_ast',
-        'pwrmgr_aon.pwr_ast': 'pwrmgr_ast',
-        'sensor_ctrl_aon.ast_alert': 'sensor_ctrl_ast_alert',
-        'sensor_ctrl_aon.ast_status': 'sensor_ctrl_ast_status',
-        'usbdev.usb_ref_val': '',
-        'usbdev.usb_ref_pulse': '',
-        'peri.tl_ast_wrapper': 'ast_tl',
-        'otp_ctrl.otp_ast_pwr_seq': '',
-        'otp_ctrl.otp_ast_pwr_seq_h': '',
-        'eflash.flash_bist_enable': 'flash_bist_enable',
-        'eflash.flash_power_down_h': 'flash_power_down_h',
-        'eflash.flash_power_ready_h': 'flash_power_ready_h',
-        'eflash.flash_test_mode_a': 'flash_test_mode_a',
-        'eflash.flash_test_voltage_h': 'flash_test_voltage_h',
-        'ast_edn.edn': ''
+        'clkmgr_aon.clk_main'          : 'clk_main',  // clock inputs
+        'clkmgr_aon.clk_io'            : 'clk_io',    // clock inputs
+        'clkmgr_aon.clk_usb'           : 'clk_usb',   // clock inputs
+        'clkmgr_aon.clk_aon'           : 'clk_aon',   // clock inputs
+        'rstmgr_aon.ast'               : 'rstmgr_ast',
+        'pwrmgr_aon.pwr_ast'           : 'pwrmgr_ast',
+        'sensor_ctrl_aon.ast_alert'    : 'sensor_ctrl_ast_alert',
+        'sensor_ctrl_aon.ast_status'   : 'sensor_ctrl_ast_status',
+        'usbdev.usb_ref_val'           : '',
+        'usbdev.usb_ref_pulse'         : '',
+        'peri.tl_ast_wrapper'          : 'ast_tl',
+        'otp_ctrl.otp_ast_pwr_seq'     : '',
+        'otp_ctrl.otp_ast_pwr_seq_h'   : '',
+        'eflash.flash_bist_enable'     : 'flash_bist_enable',
+        'eflash.flash_power_down_h'    : 'flash_power_down_h',
+        'eflash.flash_power_ready_h'   : 'flash_power_ready_h',
+        'eflash.flash_test_mode_a'     : 'flash_test_mode_a',
+        'eflash.flash_test_voltage_h'  : 'flash_test_voltage_h',
+        'entropy_src.entropy_src_rng'  : 'es_rng',
+        'lc_ctrl.lc_clk_byp_req'       : 'lc_clk_byp_req',
+        'clkmgr_aon.ast_clk_bypass_ack': 'lc_clk_byp_ack',
+        'ast_edn.edn'                  : ''
     },
   },
 
diff --git a/hw/top_earlgrey/ip/ast/ast_wrapper_pkg.core b/hw/top_earlgrey/ip/ast/ast_pkg.core
similarity index 85%
rename from hw/top_earlgrey/ip/ast/ast_wrapper_pkg.core
rename to hw/top_earlgrey/ip/ast/ast_pkg.core
index 88b7e7c..d366795 100644
--- a/hw/top_earlgrey/ip/ast/ast_wrapper_pkg.core
+++ b/hw/top_earlgrey/ip/ast/ast_pkg.core
@@ -2,7 +2,7 @@
 # Copyright lowRISC contributors.
 # Licensed under the Apache License, Version 2.0, see LICENSE for details.
 # SPDX-License-Identifier: Apache-2.0
-name: "lowrisc:systems:ast_wrapper_pkg"
+name: "lowrisc:systems:ast_pkg"
 description: "Analog sensor top (AST) wrapper package"
 
 filesets:
@@ -11,7 +11,7 @@
       - lowrisc:constants:top_pkg
       - lowrisc:ip:lc_ctrl_pkg
     files:
-      - rtl/ast_wrapper_pkg.sv
+      - rtl/ast_pkg.sv
     file_type: systemVerilogSource
 
 targets:
diff --git a/hw/top_earlgrey/ip/ast/ast_wrapper.core b/hw/top_earlgrey/ip/ast/ast_wrapper.core
deleted file mode 100644
index 195bdc0..0000000
--- a/hw/top_earlgrey/ip/ast/ast_wrapper.core
+++ /dev/null
@@ -1,39 +0,0 @@
-CAPI=2:
-# Copyright lowRISC contributors.
-# Licensed under the Apache License, Version 2.0, see LICENSE for details.
-# SPDX-License-Identifier: Apache-2.0
-name: "lowrisc:systems:ast_wrapper:0.1"
-description: "Analog sensor top (AST) wrapper"
-
-filesets:
-  files_rtl:
-    depend:
-      - lowrisc:prim:assert
-      - lowrisc:tlul:headers
-      - lowrisc:systems:ast_wrapper_pkg
-      - lowrisc:systems:ast
-      - lowrisc:systems:sensor_ctrl_reg
-      - lowrisc:systems:clkmgr_pkg
-      - "fileset_top    ? (lowrisc:ip:pwrmgr_pkg)"
-      - "fileset_topgen ? (lowrisc:systems:topgen)"
-      - lowrisc:ip:rstmgr
-      - lowrisc:ip:entropy_src_pkg
-    files:
-      - rtl/ast_wrapper.sv
-    file_type: systemVerilogSource
-
-
-targets:
-  default: &default_target
-    filesets:
-      - files_rtl
-    toplevel: ast_wrapper
-
-  lint:
-    <<: *default_target
-    default_tool: verilator
-    tools:
-      verilator:
-        mode: lint-only
-        verilator_options:
-          - "-Wall"
diff --git a/hw/top_earlgrey/ip/ast/rtl/ast_pkg.sv b/hw/top_earlgrey/ip/ast/rtl/ast_pkg.sv
index 157b187..77304e0 100644
--- a/hw/top_earlgrey/ip/ast/rtl/ast_pkg.sv
+++ b/hw/top_earlgrey/ip/ast/rtl/ast_pkg.sv
@@ -45,14 +45,19 @@
     logic clk_aon;
   } ast_clks_t;
 
+  // Alert interface
   typedef struct packed {
-    logic [NumAlerts-1:0] alerts_p;
-    logic [NumAlerts-1:0] alerts_n;
+    logic        p;
+    logic        n;
+  } ast_dif_t;
+
+  typedef struct packed {
+    ast_dif_t [NumAlerts-1:0] alerts;
   } ast_alert_req_t;
 
   typedef struct packed {
-    logic [NumAlerts-1:0] alerts_ack;
-    logic [NumAlerts-1:0] alerts_trig;
+    ast_dif_t [NumAlerts-1:0] alerts_ack;
+    ast_dif_t [NumAlerts-1:0] alerts_trig;
   } ast_alert_rsp_t;
 
   typedef struct packed {
@@ -65,23 +70,6 @@
     SwAck  = 1
   } ast_ack_mode_e;
 
-  parameter ast_alert_req_t AST_ALERT_REQ_DEFAULT = '{
-    alerts_p: '0,
-    alerts_n: {NumAlerts{1'b1}}
-  };
-
-  typedef struct packed {
-    logic flash_bist_enable;
-    logic flash_power_down_h;
-    logic flash_power_ready_h;
-  } ast_eflash_t;
-
-  // Alert interface
-  typedef struct packed {
-    logic        p;
-    logic        n;
-  } ast_dif_t;
-
   // Read-Write Margin interface
   typedef struct packed {
     logic       marg_en_a;
diff --git a/hw/top_earlgrey/ip/ast/rtl/ast_wrapper.sv b/hw/top_earlgrey/ip/ast/rtl/ast_wrapper.sv
deleted file mode 100644
index a910e35..0000000
--- a/hw/top_earlgrey/ip/ast/rtl/ast_wrapper.sv
+++ /dev/null
@@ -1,419 +0,0 @@
-// Copyright lowRISC contributors.
-// Licensed under the Apache License, Version 2.0, see LICENSE for details.
-// SPDX-License-Identifier: Apache-2.0
-//
-// This is the integration wrapper layer for AST
-
-`include "prim_assert.sv"
-
-module ast_wrapper import ast_wrapper_pkg::*;
-(
-  // root clock / rests
-  input clk_ext_i,
-  input por_ni,
-
-  // Bus Interface
-  input tlul_pkg::tl_h2d_t bus_i,
-  output tlul_pkg::tl_d2h_t bus_o,
-
-  // pwrmgr interface
-  input pwrmgr_pkg::pwr_ast_req_t pwr_i,
-  output pwrmgr_pkg::pwr_ast_rsp_t pwr_o,
-
-  // rstmgr interface
-  output ast_rst_t rst_o,
-
-  // clkmgr interface
-  output ast_clks_t clks_o,
-
-  // usb interface
-  input usb_ref_pulse_i,
-  input usb_ref_val_i,
-
-  // synchronization clocks / rests
-  input clkmgr_pkg::clkmgr_ast_out_t clks_ast_i,
-  input rstmgr_pkg::rstmgr_ast_out_t rsts_ast_i,
-
-  // adc
-  // The adc package definition should eventually be moved to the adc module
-  input adc_ast_req_t adc_i,
-  output adc_ast_rsp_t adc_o,
-
-  // entropy source interface
-  // The entropy source pacakge definition should eventually be moved to es
-  input entropy_src_pkg::entropy_src_rng_req_t es_i,
-  output entropy_src_pkg::entropy_src_rng_rsp_t es_o,
-
-  // alerts interface
-  input ast_alert_rsp_t alert_i,
-  output ast_alert_req_t alert_o,
-
-  // assorted ast status
-  output ast_status_t status_o,
-
-  // dft related
-  input scanmode_i,
-  input scan_reset_ni,
-
-  // usb io calibration
-  output logic [UsbCalibWidth-1:0] usb_io_pu_cal_o,
-
-  // IO connection to flash
-  output ast_eflash_t ast_eflash_o
-);
-
-  // For nettype real awire;
-  import ana_pkg::*;
-
-  //TODO: Added for new typdef's
-  import ast_pkg::*;
-
-
-  ///////////////////////////
-  // AST instantiation
-  ///////////////////////////
-
-  // Switch these to prim_mux cells
-  logic core_clk_val;
-  logic slow_clk_val;
-  logic io_clk_val;
-  logic usb_clk_val;
-
-  assign pwr_o.core_clk_val = core_clk_val ? pwrmgr_pkg::DiffValid : pwrmgr_pkg::DiffInvalid;
-  assign pwr_o.slow_clk_val = slow_clk_val ? pwrmgr_pkg::DiffValid : pwrmgr_pkg::DiffInvalid;
-  assign pwr_o.io_clk_val   = io_clk_val   ? pwrmgr_pkg::DiffValid : pwrmgr_pkg::DiffInvalid;
-  assign pwr_o.usb_clk_val  = usb_clk_val  ? pwrmgr_pkg::DiffValid : pwrmgr_pkg::DiffInvalid;
-
-// need to hookup later
-`ifndef VERILATOR
-`ifndef SYNTHESIS
-  awire adc_a0_a; // ADC A0 Analog Input
-  awire adc_a1_a; // ADC A1 Analog Input
-  assign adc_a0_a = 0.0;
-  assign adc_a1_a = 0.0;
-  awire pad2ast_t0_a; // T0 Analog Input
-  awire pad2ast_t1_a; // T1 Analog Input
-  assign pad2ast_t0_a = 0.0;
-  assign pad2ast_t1_a = 0.0;
-`else
-  wire adc_a0_a;  // ADC A0 Analog Input
-  wire adc_a1_a;  // ADC A1 Analog Input
-  assign adc_a0_a = 1'b0;
-  assign adc_a1_a = 1'b0;
-  wire pad2ast_t0_a; // T0 Analog Input
-  wire pad2ast_t1_a; // T1 Analog Input
-  assign pad2ast_t0_a = 1'b0;
-  assign pad2ast_t1_a = 1'b0;
-`endif
-`else
-  wire adc_a0_a;  // ADC A0 Analog Input
-  wire adc_a1_a;  // ADC A1 Analog Input
-  assign adc_a0_a = 1'b0;
-  assign adc_a1_a = 1'b0;
-  wire pad2ast_t0_a; // T0 Analog Input
-  wire pad2ast_t1_a; // T1 Analog Input
-  assign pad2ast_t0_a = 1'b0;
-  assign pad2ast_t1_a = 1'b0;
-`endif
-
-
-  ast #(
-    .EntropyStreams(EntropyStreams),
-    .AdcChannels(AdcChannels),
-    .AdcDataWidth(AdcDataWidth),
-    .UsbCalibWidth(UsbCalibWidth)
-  ) i_ast (
-    // ast interface and sync clocks / rests
-    .clk_ast_adc_i(1'b0),  // not yet in design
-    .clk_ast_rng_i(1'b0),  // not yet in design
-    .clk_ast_usb_i(clks_ast_i.clk_ast_usbdev_usb_peri),
-    .clk_ast_es_i(1'b0),   // not yet in design
-    // sensor control acts as both the alert interface and the tlul     // front-end
-    .clk_ast_alert_i(clks_ast_i.clk_ast_sensor_ctrl_aon_io_div4_secure),
-    .clk_ast_tlul_i(clks_ast_i.clk_ast_sensor_ctrl_aon_io_div4_secure),
-    .rst_ast_adc_ni(1'b0), // not yet in design
-    .rst_ast_rng_ni(1'b0), // not yet in design
-    .rst_ast_usb_ni(rsts_ast_i.rst_ast_usbdev_usb_n),
-    .rst_ast_es_ni(1'b0),
-    .rst_ast_alert_ni(rsts_ast_i.rst_ast_sensor_ctrl_aon_sys_io_div4_n),
-    .rst_ast_tlul_ni(rsts_ast_i.rst_ast_sensor_ctrl_aon_sys_io_div4_n),
-
-    // tlul if
-    .tl_i(bus_i),
-    .tl_o(bus_o),
-
-    // power related
-    .por_ni,
-    .vcaon_pok_o(rst_o.aon_pok),
-    .vcmain_pok_o(pwr_o.main_pok),
-    .vioa_pok_o(status_o.io_pok[0]),
-    .viob_pok_o(status_o.io_pok[1]),
-    .main_pd_ni(pwr_i.main_pd_n),
-    .main_iso_en_i(pwr_i.pwr_clamp),
-
-    // power OK control (for debug only). pok signal follows these inputs
-    .vcc_supp_i(1'b1),                        // VCC Supply Test
-    .vcmain_supp_i(1'b1),                     // MAIN Supply Test
-    .vcaon_supp_i(1'b1),                      // AON Supply Test
-    .vioa_supp_i(1'b1),                       // IO Rails Supply Test
-    .viob_supp_i(1'b1),                       // IO Rails Supply Test
-
-    // output clocks and associated controls
-    .clk_src_sys_o(clks_o.clk_sys),
-    .clk_src_sys_val_o(core_clk_val),
-    .clk_src_sys_en_i(pwr_i.core_clk_en),
-    .clk_src_sys_jen_i(1'b0),                 // need to add function in clkmgr
-
-    .clk_src_aon_o(clks_o.clk_aon),
-    .clk_src_aon_val_o(slow_clk_val),
-
-    .clk_src_usb_o(clks_o.clk_usb),
-    .clk_src_usb_val_o(usb_clk_val),
-    .clk_src_usb_en_i(pwr_i.usb_clk_en),
-
-    .clk_src_io_o(clks_o.clk_io),
-    .clk_src_io_val_o(io_clk_val),
-    .clk_src_io_en_i(pwr_i.io_clk_en),
-
-    // input clock and references for calibration
-    .clk_ast_ext_i(clk_ext_i),
-    .usb_ref_pulse_i,
-    .usb_ref_val_i,
-
-    // ADC interface
-    .adc_a0_ai(adc_a0_a),
-    .adc_a1_ai(adc_a1_a),
-    .adc_chnsel_i(adc_i.channel_sel),
-    .adc_pd_i(adc_i.pd),
-    .adc_d_o(adc_o.data),
-    .adc_d_val_o(adc_o.data_valid),
-
-    // entropy source interface
-    .rng_en_i(es_i.rng_enable),
-    .rng_val_o(es_o.rng_valid),
-    .rng_b_o(es_o.rng_b),
-
-    // entropy distribution interface - need to hookup later
-    .entropy_req_o(),
-    .entropy_ack_i('0),
-    .entropy_i('0),
-
-    // alerts
-    .as_alert_po(alert_o.alerts_p[sensor_ctrl_reg_pkg::AsSel]),
-    .as_alert_no(alert_o.alerts_n[sensor_ctrl_reg_pkg::AsSel]),
-    .cg_alert_po(alert_o.alerts_p[sensor_ctrl_reg_pkg::CgSel]),
-    .cg_alert_no(alert_o.alerts_n[sensor_ctrl_reg_pkg::CgSel]),
-    .gd_alert_po(alert_o.alerts_p[sensor_ctrl_reg_pkg::GdSel]),
-    .gd_alert_no(alert_o.alerts_n[sensor_ctrl_reg_pkg::GdSel]),
-    .ts_alert_hi_po(alert_o.alerts_p[sensor_ctrl_reg_pkg::TsHiSel]),
-    .ts_alert_hi_no(alert_o.alerts_n[sensor_ctrl_reg_pkg::TsHiSel]),
-    .ts_alert_lo_po(alert_o.alerts_p[sensor_ctrl_reg_pkg::TsLoSel]),
-    .ts_alert_lo_no(alert_o.alerts_n[sensor_ctrl_reg_pkg::TsLoSel]),
-    .ls_alert_po(alert_o.alerts_p[sensor_ctrl_reg_pkg::LsSel]),
-    .ls_alert_no(alert_o.alerts_n[sensor_ctrl_reg_pkg::LsSel]),
-    .ot_alert_po(alert_o.alerts_p[sensor_ctrl_reg_pkg::OtSel]),
-    .ot_alert_no(alert_o.alerts_n[sensor_ctrl_reg_pkg::OtSel]),
-    .as_alert_ack_i(alert_i.alerts_ack[sensor_ctrl_reg_pkg::AsSel]),
-    .cg_alert_ack_i(alert_i.alerts_ack[sensor_ctrl_reg_pkg::CgSel]),
-    .gd_alert_ack_i(alert_i.alerts_ack[sensor_ctrl_reg_pkg::GdSel]),
-    .ts_alert_hi_ack_i(alert_i.alerts_ack[sensor_ctrl_reg_pkg::TsHiSel]),
-    .ts_alert_lo_ack_i(alert_i.alerts_ack[sensor_ctrl_reg_pkg::TsLoSel]),
-    .ls_alert_ack_i(alert_i.alerts_ack[sensor_ctrl_reg_pkg::LsSel]),
-    .ot_alert_ack_i(alert_i.alerts_ack[sensor_ctrl_reg_pkg::OtSel]),
-    .as_alert_trig_i(alert_i.alerts_trig[sensor_ctrl_reg_pkg::AsSel]),
-    .cg_alert_trig_i(alert_i.alerts_trig[sensor_ctrl_reg_pkg::CgSel]),
-    .gd_alert_trig_i(alert_i.alerts_trig[sensor_ctrl_reg_pkg::GdSel]),
-    .ts_alert_hi_trig_i(alert_i.alerts_trig[sensor_ctrl_reg_pkg::TsHiSel]),
-    .ts_alert_lo_trig_i(alert_i.alerts_trig[sensor_ctrl_reg_pkg::TsLoSel]),
-    .ls_alert_trig_i(alert_i.alerts_trig[sensor_ctrl_reg_pkg::LsSel]),
-    .ot_alert_trig_i(alert_i.alerts_trig[sensor_ctrl_reg_pkg::OtSel]),
-
-    // flash interface
-    .flash_power_down_h_o(ast_eflash_o.flash_power_down_h),
-    .flash_power_ready_h_o(ast_eflash_o.flash_power_ready_h),
-
-    // analog debug signals
-    .ast2pad_a_io(),
-
-    // pad mux related - DFT
-    .ast2padmux_o(),  // DFT_2_IO Output Signals
-    .padmux2ast_i('0),  // IO_2_DFT Input Signals
-
-    // usb IO calib
-    .usb_io_pu_cal_o, // USB IO Pull-up Calibration Setting
-
-    // dft related
-    .scan_mode_i(scanmode_i),
-    .scan_reset_ni
-  );
-
-  // TODO hook-up to ast
-  assign ast_eflash_o.flash_bist_enable = lc_ctrl_pkg::Off;
-
-endmodule // ast_wrapper
-
-//lc_ctrl_pkg::lc_tx_t flash_bist_en_o;
-//assign ast_eflash_o.flash_bist_enable = (flash_bist_en_o == lc_ctrl_pkg::On);
-//
-//ast_pkg::ast_dif_t as_alert_o;
-//assign alert_o.alerts_p[sensor_ctrl_reg_pkg::AsSel] = as_alert_o.p;
-//assign alert_o.alerts_n[sensor_ctrl_reg_pkg::AsSel] = as_alert_o.n;
-//
-//ast_pkg::ast_dif_t cg_alert_o;
-//assign alert_o.alerts_p[sensor_ctrl_reg_pkg::CgSel] = cg_alert_o.p;
-//assign alert_o.alerts_n[sensor_ctrl_reg_pkg::CgSel] = cg_alert_o.n;
-//
-//ast_pkg::ast_dif_t gd_alert_o;
-//assign alert_o.alerts_p[sensor_ctrl_reg_pkg::GdSel] = gd_alert_o.p;
-//assign alert_o.alerts_n[sensor_ctrl_reg_pkg::GdSel] = gd_alert_o.n;
-//
-//ast_pkg::ast_dif_t ts_alert_hi_o;
-//assign alert_o.alerts_p[sensor_ctrl_reg_pkg::TsHiSel] = ts_alert_hi_o.p;
-//assign alert_o.alerts_n[sensor_ctrl_reg_pkg::TsHiSel] = ts_alert_hi_o.n;
-//
-//ast_pkg::ast_dif_t ts_alert_lo_o;
-//assign alert_o.alerts_p[sensor_ctrl_reg_pkg::TsLoSel] = ts_alert_lo_o.p;
-//assign alert_o.alerts_n[sensor_ctrl_reg_pkg::TsLoSel] = ts_alert_lo_o.n;
-//
-//ast_pkg::ast_dif_t ls_alert_o;
-//assign alert_o.alerts_p[sensor_ctrl_reg_pkg::LsSel] = ls_alert_o.p;
-//assign alert_o.alerts_n[sensor_ctrl_reg_pkg::LsSel] = ls_alert_o.n;
-//
-//ast_pkg::ast_dif_t ot_alert_o;
-//assign alert_o.alerts_p[sensor_ctrl_reg_pkg::OtSel] = ot_alert_o.p;
-//assign alert_o.alerts_n[sensor_ctrl_reg_pkg::OtSel] = ot_alert_o.n;
-//
-////~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//// Module: 'ast' - Jun 25, 2020. 'vinst.pl' Rev 1.06
-////~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//ast #(
-///*P*/ .EntropyStreams ( EntropyStreams ),
-///*P*/ .AdcChannels ( AdcChannels ),
-///*P*/ .AdcDataWidth ( AdcDataWidth ),
-///*P*/ .UsbCalibWidth ( UsbCalibWidth ),
-///*P*/ .Ast2PadOutWidth ( 10 ),                                 //TODO: Assign
-///*P*/ .Pad2AstInWidth ( 10 )                                   //TODO: Assign
-//) u_ast (
-//      // tlul
-///*I*/ .tl_i ( bus_i ),
-///*O*/ .tl_o ( bus_o ),
-//      // buffered clocks & resets
-///*I*/ .clk_ast_adc_i ( 1'b0 ),                        // Not yet in the design
-///*I*/ .rst_ast_adc_ni ( 1'b0 ),                       // Not yet in the design
-///*I*/ .clk_ast_alert_i ( clks_ast_i.clk_ast_sensor_ctrl_io_div4_secure ),
-///*I*/ .rst_ast_alert_ni ( rsts_ast_i.rst_ast_sensor_ctrl_sys_io_div4_n ),  //JL TODO
-///*I*/ .clk_ast_es_i ( 1'b0 ),                         // Not yet in the design
-///*I*/ .rst_ast_es_ni ( 1'b0 ),                        // Not yet in the design
-///*I*/ .clk_ast_rng_i ( 1'b0 ),                        // Not yet in the design
-///*I*/ .rst_ast_rng_ni ( 1'b0 ),                       // Not yet in the design
-///*I*/ .clk_ast_tlul_i ( clks_ast_i.clk_ast_sensor_ctrl_io_div4_secure ),
-///*I*/ .rst_ast_tlul_ni ( rsts_ast_i.rst_ast_sensor_ctrl_sys_io_div4_n ),  //JL TODO
-///*I*/ .clk_ast_usb_i ( clks_ast_i.clk_ast_usbdev_usb_peri ),
-///*I*/ .rst_ast_usb_ni ( rsts_ast_i.rst_ast_usbdev_usb_n ),  //JL TODO
-///*I*/ .clk_ast_ext_i ( clk_ext_i ),
-///*I*/ .por_ni ( por_ni ),
-//      // pok test
-///*I*/ .vcc_supp_i ( 1'b1 ),                           // VCC Supply Test
-///*I*/ .vcaon_supp_i ( 1'b1 ),                         // AON Supply Test
-///*I*/ .vcmain_supp_i ( 1'b1 ),                        // MAIN Supply Test
-///*I*/ .vioa_supp_i ( 1'b1 ),                          // IO Rails Supply Test
-///*I*/ .viob_supp_i ( 1'b1 ),                          // IO Rails Supply Test
-//      // pok
-///*O*/ .vcaon_pok_o ( rst_o.aon_pok ),
-///*O*/ .vcmain_pok_o ( pwr_o.main_pok ),
-///*O*/ .vioa_pok_o ( status_o.io_pok[0] ),
-///*O*/ .viob_pok_o ( status_o.io_pok[1] ),
-//      // main regulator
-///*I*/ .main_iso_en_i ( pwr_i.pwr_clamp ),
-///*I*/ .main_pd_ni ( pwr_i.main_pd_n ),
-//      // pdm control (flash)/otp
-///*O*/ .flash_power_down_h_o ( ast_eflash_o.flash_power_down_h ),
-///*O*/ .flash_power_ready_h_o ( ast_eflash_o.flash_power_ready_h ),
-///*I*/ .otp_power_seq_i ( 2'b00 ),                             //TODO: Connect
-///*O*/ .otp_power_seq_h_o ( ),                                 //TODO: Connect
-//      // system source clock
-///*I*/ .clk_src_sys_en_i ( pwr_i.core_clk_en ),
-///*I*/ .clk_src_sys_jen_i ( 1'b0 ),           // need to add function in clkmgr
-///*O*/ .clk_src_sys_o ( clks_o.clk_sys  ),
-///*O*/ .clk_src_sys_val_o ( core_clk_val ),
-//      // aon source clock
-///*O*/ .clk_src_aon_o ( clks_o.clk_aon ),
-///*O*/ .clk_src_aon_val_o ( slow_clk_val ),
-//      // io source clock
-///*I*/ .clk_src_io_en_i ( pwr_i.io_clk_en ),
-///*O*/ .clk_src_io_o ( clks_o.clk_io ),
-///*O*/ .clk_src_io_val_o ( io_clk_val ),
-//      // usb source clock
-///*I*/ .usb_ref_pulse_i ( usb_ref_pulse_i ),
-///*I*/ .usb_ref_val_i ( usb_ref_val_i ),
-///*I*/ .clk_src_usb_en_i ( pwr_i.usb_clk_en ),
-///*O*/ .clk_src_usb_o ( clks_o.clk_usb ),
-///*O*/ .clk_src_usb_val_o ( usb_clk_val ),
-///*O*/ .usb_io_pu_cal_o,                  // USB IO Pull-up Calibration Setting
-//      // adc
-///*I*/ .adc_pd_i ( adc_i.pd ),
-///*I*/ .adc_a0_ai ( adc_a0_a ),
-///*I*/ .adc_a1_ai ( adc_a1_a ),
-///*I*/ .adc_chnsel_i ( adc_i.channel_sel ),
-///*O*/ .adc_d_o ( adc_o.data ),
-///*O*/ .adc_d_val_o ( adc_o.data_valid ),
-//      // rng
-///*I*/ .rng_en_i ( es_i.rng_enable ),
-///*O*/ .rng_val_o ( es_o.rng_valid ),
-///*O*/ .rng_b_o ( es_o.rng_b ),
-//      // entropy
-///*I*/ .entropy_rsp_i ( '{edn_ack: 1'b0, edn_fips: 1'b1,  edn_bus: '0} ),
-///*O*/ .entropy_req_o ( ),                                     //TODO: Connect
-//      // alerts
-///*I*/ .as_alert_trig_i ( '{ p: 1'b0, n: 1'b1 } ),             //TODO: Connect
-///*I*/ .as_alert_ack_i ( '{ p: 1'b0, n: 1'b1 } ),              //TODO: Connect
-///*O*/ .as_alert_o ( as_alert_o ),
-///*I*/ .cg_alert_trig_i ( '{ p: 1'b0, n: 1'b1 } ),             //TODO: Connect
-///*I*/ .cg_alert_ack_i ( '{ p: 1'b0, n: 1'b1 } ),              //TODO: Connect
-///*O*/ .cg_alert_o ( cg_alert_o ),
-///*I*/ .gd_alert_trig_i ( '{ p: 1'b0, n: 1'b1 } ),             //TODO: Connect
-///*I*/ .gd_alert_ack_i ( '{ p: 1'b0, n: 1'b1 } ),              //TODO: Connect
-///*O*/ .gd_alert_o ( gd_alert_o ),
-///*I*/ .ts_alert_hi_trig_i ( '{ p: 1'b0, n: 1'b1 } ),          //TODO: Connect
-///*I*/ .ts_alert_hi_ack_i ( '{ p: 1'b0, n: 1'b1 } ),           //TODO: Connect
-///*O*/ .ts_alert_hi_o ( ts_alert_hi_o ),
-///*I*/ .ts_alert_lo_trig_i ( '{ p: 1'b0, n: 1'b1 } ),          //TODO: Connect
-///*I*/ .ts_alert_lo_ack_i ( '{ p: 1'b0, n: 1'b1 } ),           //TODO: Connect
-///*O*/ .ts_alert_lo_o ( ts_alert_lo_o ),
-///*I*/ .ls_alert_trig_i ( '{ p: 1'b0, n: 1'b1 } ),             //TODO: Connect
-///*I*/ .ls_alert_ack_i ( '{ p: 1'b0, n: 1'b1 } ),              //TODO: Connect
-///*O*/ .ls_alert_o ( ls_alert_o ),
-///*I*/ .ot_alert_trig_i ( '{ p: 1'b0, n: 1'b1 } ),             //TODO: Connect
-///*I*/ .ot_alert_ack_i ( '{ p: 1'b0, n: 1'b1 } ),              //TODO: Connect
-///*O*/ .ot_alert_o ( ot_alert_o ),
-//      // dft
-///*I*/ .dft_strap_test_i ( '{valid: 1'b0, straps: 2'b00} ),    //TODO: Connect
-///*I*/ .lc_dft_en_i ( lc_ctrl_pkg::On ),                       //TODO: Connect
-//      // pad mux related
-///*I*/ .padmux2ast_i ( '0 ),                                   //TODO: Connect
-///*O*/ .ast2padmux_o ( ),                                      //TODO: Connect
-///*I*/ .pad2ast_t0_ai ( pad2ast_t0_a ),                        //TODO: Connect
-///*I*/ .pad2ast_t1_ai ( pad2ast_t1_a  ),                       //TODO: Connect
-///*O*/ .ast2pad_t0_ao ( ),                                     //TODO: Connect
-///*O*/ .ast2pad_t1_ao ( ),                                     //TODO: Connect
-//      //
-///*I*/ .lc_clk_byp_req_i ( lc_ctrl_pkg::Off ),                 //TODO: Connect
-///*O*/ .lc_clk_byp_ack_o ( ),                                  //TODO: Connect
-///*O*/ .flash_bist_en_o ( flash_bist_en_o ),                   //TODO: Connect
-//      //
-///*O*/ .dpram_rmf_o ( ),                                       //TODO: Connect
-///*O*/ .dpram_rml_o ( ),                                       //TODO: Connect
-///*O*/ .spram_rm_o ( ),                                        //TODO: Connect
-///*O*/ .sprgf_rm_o ( ),                                        //TODO: Connect
-///*O*/ .sprom_rm_o ( ),                                        //TODO: Connect
-//      // scan
-///*O*/ .dft_scan_md_o ( ),                                     //TODO: Connect
-///*O*/ .scan_shift_en_o ( ),                                   //TODO: Connect
-///*O*/ .scan_reset_no ( )                                      //TODO: Connect
-//);
-//// end of u_ast
-//
-//
-//
-//endmodule : ast_wrapper
-//>>>>>>> 05149b668 ([ast] Added DFT interface + logic updates)
diff --git a/hw/top_earlgrey/ip/ast/rtl/ast_wrapper_pkg.sv b/hw/top_earlgrey/ip/ast/rtl/ast_wrapper_pkg.sv
deleted file mode 100644
index aa2f935..0000000
--- a/hw/top_earlgrey/ip/ast/rtl/ast_wrapper_pkg.sv
+++ /dev/null
@@ -1,72 +0,0 @@
-// Copyright lowRISC contributors.
-// Licensed under the Apache License, Version 2.0, see LICENSE for details.
-// SPDX-License-Identifier: Apache-2.0
-//
-
-package ast_wrapper_pkg;
-
-  parameter int NumAlerts      = top_pkg::NUM_AST_ALERTS;
-  parameter int NumIoRails     = top_pkg::NUM_IO_RAILS;
-  parameter int EntropyStreams = top_pkg::ENTROPY_STREAM;
-  parameter int AdcChannels    = top_pkg::ADC_CHANNELS;
-  parameter int AdcDataWidth   = top_pkg::ADC_DATAW;
-  parameter int UsbCalibWidth  = 16;
-
-  // The following structs should eventually be relocted to other modules
-  typedef struct packed {
-    logic [AdcChannels-1:0] channel_sel;
-    logic pd;
-  } adc_ast_req_t;
-
-  typedef struct packed {
-    logic [AdcDataWidth-1:0] data;
-    logic data_valid;
-  } adc_ast_rsp_t;
-
-  typedef struct packed {
-    logic aon_pok;
-  } ast_rst_t;
-
-  parameter ast_rst_t AST_RST_DEFAULT = '{
-    aon_pok: 1'b1
-  };
-
-  typedef struct packed {
-    logic clk_sys;
-    logic clk_io;
-    logic clk_usb;
-    logic clk_aon;
-  } ast_clks_t;
-
-  typedef struct packed {
-    logic [NumAlerts-1:0] alerts_p;
-    logic [NumAlerts-1:0] alerts_n;
-  } ast_alert_req_t;
-
-  typedef struct packed {
-    logic [NumAlerts-1:0] alerts_ack;
-    logic [NumAlerts-1:0] alerts_trig;
-  } ast_alert_rsp_t;
-
-  typedef struct packed {
-    logic [NumIoRails-1:0] io_pok;
-  } ast_status_t;
-
-  // Ack mode enumerations
-  typedef enum logic {
-    ImmAck = 0,
-    SwAck  = 1
-  } ast_ack_mode_e;
-
-  parameter ast_alert_req_t AST_ALERT_REQ_DEFAULT = '{
-    alerts_p: '0,
-    alerts_n: {NumAlerts{1'b1}}
-  };
-
-  typedef struct packed {
-    lc_ctrl_pkg::lc_tx_t flash_bist_enable;
-    logic flash_power_down_h;
-    logic flash_power_ready_h;
-  } ast_eflash_t;
-
-endpackage // ast_wrapper_pkg
diff --git a/hw/top_earlgrey/ip/clkmgr/rtl/autogen/clkmgr.sv b/hw/top_earlgrey/ip/clkmgr/rtl/autogen/clkmgr.sv
index 8a0a1b2..5f409d1 100644
--- a/hw/top_earlgrey/ip/clkmgr/rtl/autogen/clkmgr.sv
+++ b/hw/top_earlgrey/ip/clkmgr/rtl/autogen/clkmgr.sv
@@ -450,6 +450,8 @@
   assign clocks_ast_o.clk_ast_usbdev_aon_peri = clocks_o.clk_aon_peri;
   assign clocks_ast_o.clk_ast_usbdev_usb_peri = clocks_o.clk_usb_peri;
   assign clocks_ast_o.clk_ast_sensor_ctrl_aon_io_div4_secure = clocks_o.clk_io_div4_secure;
+  assign clocks_ast_o.clk_ast_entropy_src_main_secure = clocks_o.clk_main_secure;
+  assign clocks_ast_o.clk_ast_edn0_main_secure = clocks_o.clk_main_secure;
 
   ////////////////////////////////////////////////////
   // Assertions
diff --git a/hw/top_earlgrey/ip/clkmgr/rtl/autogen/clkmgr_pkg.sv b/hw/top_earlgrey/ip/clkmgr/rtl/autogen/clkmgr_pkg.sv
index 9652869..3227a95 100644
--- a/hw/top_earlgrey/ip/clkmgr/rtl/autogen/clkmgr_pkg.sv
+++ b/hw/top_earlgrey/ip/clkmgr/rtl/autogen/clkmgr_pkg.sv
@@ -49,6 +49,8 @@
     logic clk_ast_usbdev_aon_peri;
     logic clk_ast_usbdev_usb_peri;
     logic clk_ast_sensor_ctrl_aon_io_div4_secure;
+    logic clk_ast_entropy_src_main_secure;
+    logic clk_ast_edn0_main_secure;
   } clkmgr_ast_out_t;
 
   typedef struct packed {
diff --git a/hw/top_earlgrey/ip/rstmgr/rtl/autogen/rstmgr.sv b/hw/top_earlgrey/ip/rstmgr/rtl/autogen/rstmgr.sv
index 50887c2..ed2bed5 100644
--- a/hw/top_earlgrey/ip/rstmgr/rtl/autogen/rstmgr.sv
+++ b/hw/top_earlgrey/ip/rstmgr/rtl/autogen/rstmgr.sv
@@ -695,6 +695,8 @@
   assign resets_ast_o.rst_ast_usbdev_sys_aon_n = resets_o.rst_sys_aon_n;
   assign resets_ast_o.rst_ast_usbdev_usb_n = resets_o.rst_usb_n;
   assign resets_ast_o.rst_ast_sensor_ctrl_aon_sys_io_div4_n = resets_o.rst_sys_io_div4_n;
+  assign resets_ast_o.rst_ast_entropy_src_sys_n = resets_o.rst_sys_n;
+  assign resets_ast_o.rst_ast_edn0_sys_n = resets_o.rst_sys_n;
 
 
 
diff --git a/hw/top_earlgrey/ip/rstmgr/rtl/autogen/rstmgr_pkg.sv b/hw/top_earlgrey/ip/rstmgr/rtl/autogen/rstmgr_pkg.sv
index 8c1737a..85dc87b 100644
--- a/hw/top_earlgrey/ip/rstmgr/rtl/autogen/rstmgr_pkg.sv
+++ b/hw/top_earlgrey/ip/rstmgr/rtl/autogen/rstmgr_pkg.sv
@@ -72,6 +72,8 @@
     logic [PowerDomains-1:0] rst_ast_usbdev_sys_aon_n;
     logic [PowerDomains-1:0] rst_ast_usbdev_usb_n;
     logic [PowerDomains-1:0] rst_ast_sensor_ctrl_aon_sys_io_div4_n;
+    logic [PowerDomains-1:0] rst_ast_entropy_src_sys_n;
+    logic [PowerDomains-1:0] rst_ast_edn0_sys_n;
   } rstmgr_ast_out_t;
 
   // default value for rstmgr_ast_rsp_t (for dangling ports)
diff --git a/hw/top_earlgrey/ip/sensor_ctrl/data/sensor_ctrl.hjson b/hw/top_earlgrey/ip/sensor_ctrl/data/sensor_ctrl.hjson
index 9d01c41..122180a 100644
--- a/hw/top_earlgrey/ip/sensor_ctrl/data/sensor_ctrl.hjson
+++ b/hw/top_earlgrey/ip/sensor_ctrl/data/sensor_ctrl.hjson
@@ -94,7 +94,7 @@
   ]
 
 
-  // Define ast_wrapper struct package
+  // Define ast_struct package
   inter_signal_list: [
 
     // should be defined by ast wrapper later
@@ -102,7 +102,7 @@
       type:    "req_rsp",
       name:    "ast_alert",
       act:     "rsp",
-      package: "ast_wrapper_pkg",
+      package: "ast_pkg",
     },
 
     // should be defined by ast wrapper later
@@ -110,7 +110,7 @@
       type:    "uni",
       name:    "ast_status",
       act:     "rcv",
-      package: "ast_wrapper_pkg",
+      package: "ast_pkg",
     },
   ],
 
diff --git a/hw/top_earlgrey/ip/sensor_ctrl/rtl/sensor_ctrl.sv b/hw/top_earlgrey/ip/sensor_ctrl/rtl/sensor_ctrl.sv
index 9be6cee..207340f 100644
--- a/hw/top_earlgrey/ip/sensor_ctrl/rtl/sensor_ctrl.sv
+++ b/hw/top_earlgrey/ip/sensor_ctrl/rtl/sensor_ctrl.sv
@@ -18,9 +18,9 @@
   output tlul_pkg::tl_d2h_t tl_o,
 
   // Interface from AST
-  input ast_wrapper_pkg::ast_alert_req_t ast_alert_i,
-  output ast_wrapper_pkg::ast_alert_rsp_t ast_alert_o,
-  input ast_wrapper_pkg::ast_status_t ast_status_i,
+  input ast_pkg::ast_alert_req_t ast_alert_i,
+  output ast_pkg::ast_alert_rsp_t ast_alert_o,
+  input ast_pkg::ast_status_t ast_status_i,
 
   // Alerts
   input  prim_alert_pkg::alert_rx_t [NumAlerts-1:0] alert_rx_i,
@@ -60,7 +60,11 @@
 
   // While the alerts are differential, they are not perfectly aligned.
   // Instead, each alert is treated independently.
-  assign alerts_vld = ast_alert_i.alerts_p | ~ast_alert_i.alerts_n;
+  always_comb begin
+    for (int i = 0; i < NumAlerts; i++) begin
+      alerts_vld[i] = ast_alert_i.alerts[i].p | ~ast_alert_i.alerts[i].n;
+    end
+  end
 
   // alert test connection
   assign alert_test[AsSel]   = reg2hw.alert_test.recov_as.qe    & reg2hw.alert_test.recov_as.q;
@@ -109,13 +113,19 @@
   // When in immediate ack mode, ack alerts as they are received by the sender
   // When in software ack mode, only ack when software issues the command to clear alert_state
   always_comb begin
-    ast_alert_o.alerts_ack = '0;
     for (int i = 0; i < NumAlerts; i++) begin
-      ast_alert_o.alerts_ack[i] = alerts_clr[i];
+      ast_alert_o.alerts_ack[i].p = alerts_clr[i];
+      ast_alert_o.alerts_ack[i].n = ~alerts_clr[i];
     end
   end
 
   // alert trigger for test
-  assign ast_alert_o.alerts_trig = reg2hw.alert_trig;
+  always_comb begin
+    for (int i = 0; i < NumAlerts; i++) begin
+      ast_alert_o.alerts_trig[i].p = reg2hw.alert_trig[i];
+      ast_alert_o.alerts_trig[i].n = ~reg2hw.alert_trig[i];
+    end
+  end
+
 
 endmodule // sensor_ctrl
diff --git a/hw/top_earlgrey/ip/sensor_ctrl/sensor_ctrl_pkg.core b/hw/top_earlgrey/ip/sensor_ctrl/sensor_ctrl_pkg.core
index 6849b9e..800ece1 100644
--- a/hw/top_earlgrey/ip/sensor_ctrl/sensor_ctrl_pkg.core
+++ b/hw/top_earlgrey/ip/sensor_ctrl/sensor_ctrl_pkg.core
@@ -9,7 +9,7 @@
   files_rtl:
     depend:
       - lowrisc:constants:top_pkg
-      - lowrisc:systems:ast_wrapper_pkg
+      - lowrisc:systems:ast_pkg
       - lowrisc:systems:sensor_ctrl_reg
     files:
       - rtl/sensor_ctrl_pkg.sv
diff --git a/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv b/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv
index 48cf7db..efcc279 100644
--- a/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv
+++ b/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv
@@ -61,9 +61,9 @@
   input  rstmgr_pkg::rstmgr_ast_t       rstmgr_ast_i,
   output pwrmgr_pkg::pwr_ast_req_t       pwrmgr_ast_req_o,
   input  pwrmgr_pkg::pwr_ast_rsp_t       pwrmgr_ast_rsp_i,
-  input  ast_wrapper_pkg::ast_alert_req_t       sensor_ctrl_ast_alert_req_i,
-  output ast_wrapper_pkg::ast_alert_rsp_t       sensor_ctrl_ast_alert_rsp_o,
-  input  ast_wrapper_pkg::ast_status_t       sensor_ctrl_ast_status_i,
+  input  ast_pkg::ast_alert_req_t       sensor_ctrl_ast_alert_req_i,
+  output ast_pkg::ast_alert_rsp_t       sensor_ctrl_ast_alert_rsp_o,
+  input  ast_pkg::ast_status_t       sensor_ctrl_ast_status_i,
   output logic       usbdev_usb_ref_val_o,
   output logic       usbdev_usb_ref_pulse_o,
   output tlul_pkg::tl_h2d_t       ast_tl_req_o,
@@ -75,6 +75,10 @@
   input  logic       flash_power_ready_h_i,
   input  logic [3:0] flash_test_mode_a_i,
   input  logic       flash_test_voltage_h_i,
+  output entropy_src_pkg::entropy_src_rng_req_t       es_rng_req_o,
+  input  entropy_src_pkg::entropy_src_rng_rsp_t       es_rng_rsp_i,
+  output lc_ctrl_pkg::lc_tx_t       lc_clk_byp_req_o,
+  input  lc_ctrl_pkg::lc_tx_t       lc_clk_byp_ack_i,
   input  edn_pkg::edn_req_t       ast_edn_edn_req_i,
   output edn_pkg::edn_rsp_t       ast_edn_edn_rsp_o,
   output clkmgr_pkg::clkmgr_ast_out_t       clks_ast_o,
@@ -429,7 +433,6 @@
   lc_ctrl_pkg::lc_tx_t       lc_ctrl_lc_cpu_en;
   lc_ctrl_pkg::lc_tx_t       lc_ctrl_lc_escalate_en;
   lc_ctrl_pkg::lc_tx_t       lc_ctrl_lc_check_byp_en;
-  lc_ctrl_pkg::lc_tx_t       lc_ctrl_lc_clk_byp_req;
   lc_ctrl_pkg::lc_tx_t       lc_ctrl_lc_clk_byp_ack;
   lc_ctrl_pkg::lc_tx_t       lc_ctrl_lc_creator_seed_sw_rw_en;
   lc_ctrl_pkg::lc_tx_t       lc_ctrl_lc_owner_seed_sw_rw_en;
@@ -1356,7 +1359,7 @@
       .lc_cpu_en_o(lc_ctrl_lc_cpu_en),
       .lc_keymgr_en_o(),
       .lc_escalate_en_o(lc_ctrl_lc_escalate_en),
-      .lc_clk_byp_req_o(lc_ctrl_lc_clk_byp_req),
+      .lc_clk_byp_req_o(lc_clk_byp_req_o),
       .lc_clk_byp_ack_i(lc_ctrl_lc_clk_byp_ack),
       .lc_flash_rma_req_o(flash_ctrl_rma_req),
       .lc_flash_rma_seed_o(flash_ctrl_rma_seed),
@@ -1488,7 +1491,7 @@
 
       // Inter-module signals
       .clocks_o(clkmgr_aon_clocks),
-      .ast_clk_bypass_ack_i(lc_ctrl_pkg::LC_TX_DEFAULT),
+      .ast_clk_bypass_ack_i(lc_clk_byp_ack_i),
       .lc_clk_bypass_ack_o(lc_ctrl_lc_clk_byp_ack),
       .clk_main_i(clk_main_i),
       .clk_io_i(clk_io_i),
@@ -1836,8 +1839,8 @@
       // Inter-module signals
       .entropy_src_hw_if_i(csrng_entropy_src_hw_if_req),
       .entropy_src_hw_if_o(csrng_entropy_src_hw_if_rsp),
-      .entropy_src_rng_o(),
-      .entropy_src_rng_i(entropy_src_pkg::ENTROPY_SRC_RNG_RSP_DEFAULT),
+      .entropy_src_rng_o(es_rng_req_o),
+      .entropy_src_rng_i(es_rng_rsp_i),
       .entropy_src_xht_o(),
       .entropy_src_xht_i(entropy_src_pkg::ENTROPY_SRC_XHT_RSP_DEFAULT),
       .efuse_es_sw_reg_en_i('0),
diff --git a/hw/top_earlgrey/rtl/top_earlgrey_asic.sv b/hw/top_earlgrey/rtl/top_earlgrey_asic.sv
index e98de0e..e2e7484 100644
--- a/hw/top_earlgrey/rtl/top_earlgrey_asic.sv
+++ b/hw/top_earlgrey/rtl/top_earlgrey_asic.sv
@@ -139,13 +139,6 @@
     .dio_attr_i          ( dio_attr         )
   );
 
-  // TODO: Do I need the imports?
-  // For nettype real awire;
-  import ana_pkg::*;
-  // For new typdef's
-  import ast_pkg::*;
-
-
   //////////////////////
   // JTAG Overlay Mux //
   //////////////////////
@@ -202,62 +195,14 @@
   //////////////////////
   // AST              //
   //////////////////////
-//tlul_pkg::tl_h2d_t base_ast_bus;
-//tlul_pkg::tl_d2h_t ast_base_bus;
-//ast_wrapper_pkg::ast_status_t ast_base_status;
-//ast_wrapper_pkg::ast_alert_req_t ast_base_alerts;
-//ast_wrapper_pkg::ast_alert_rsp_t base_ast_alerts;
-//ast_wrapper_pkg::ast_rst_t ast_base_rst;
-//ast_wrapper_pkg::ast_clks_t ast_base_clks;
-//ast_wrapper_pkg::ast_eflash_t ast_base_eflash;
-//pwrmgr_pkg::pwr_ast_req_t base_ast_pwr;
-//pwrmgr_pkg::pwr_ast_rsp_t ast_base_pwr;
-//clkmgr_pkg::clkmgr_ast_out_t clks_ast;
-//rstmgr_pkg::rstmgr_ast_out_t rsts_ast;
-//otp_ctrl_pkg::otp_ast_req_t otp_ctrl_otp_ast_pwr_seq;
-//otp_ctrl_pkg::otp_ast_rsp_t otp_ctrl_otp_ast_pwr_seq_h;
-////ast_wrapper_pkg::ast_func_clks_rsts base_ast_aux;
-//logic usb_ref_pulse;
-//logic usb_ref_val;
-//
-//// TODO: connect once available in AST
-//logic unused_otp_ctrl_otp_ast_pwr_seq;
-//assign unused_otp_ctrl_otp_ast_pwr_seq = otp_ctrl_otp_ast_pwr_seq;
-//assign otp_ctrl_otp_ast_pwr_seq_h = '0;
-//
-//ast_wrapper ast_wrapper (
-//  .clk_ext_i(clk),
-//  .por_ni(rst_n),
-//  .bus_i(base_ast_bus),
-//  .bus_o(ast_base_bus),
-//  .pwr_i(base_ast_pwr),
-//  .pwr_o(ast_base_pwr),
-//  .rst_o(ast_base_rst),
-//  .clks_o(ast_base_clks),
-//  .usb_ref_pulse_i(usb_ref_pulse),
-//  .usb_ref_val_i(usb_ref_val),
-//  .clks_ast_i(clks_ast),
-//  .rsts_ast_i(rsts_ast),
-//  .adc_i('0),
-//  .adc_o(),
-//  .es_i('0), // not in top_earlgrey
-//  .es_o(),   // not in top_earlgrey
-//  .alert_i(base_ast_alerts),
-//  .alert_o(ast_base_alerts),
-//  .status_o(ast_base_status),
-//  .usb_io_pu_cal_o(),
-//  .ast_eflash_o(ast_base_eflash),
-//  .scanmode_i(1'b0),
-//  .scan_reset_ni(1'b1)
-//);
-
   // TLUL interface
   tlul_pkg::tl_h2d_t base_ast_bus;
   tlul_pkg::tl_d2h_t ast_base_bus;
 
   // assorted ast status
-  ast_pkg::ast_status_t status_o;
+  ast_pkg::ast_status_t ast_status;
 
+  // ast clocks and resets
   ast_pkg::ast_rst_t ast_base_rst;
   ast_pkg::ast_clks_t ast_base_clks;
 
@@ -283,221 +228,173 @@
 
   // entropy source interface
   // The entropy source pacakge definition should eventually be moved to es
-  entropy_src_pkg::entropy_src_rng_req_t es_i;
-  entropy_src_pkg::entropy_src_rng_rsp_t es_o;
+  entropy_src_pkg::entropy_src_rng_req_t es_rng_req;
+  entropy_src_pkg::entropy_src_rng_rsp_t es_rng_rsp;
+
+  // entropy distribution network
+  edn_pkg::edn_req_t ast_edn_edn_req;
+  edn_pkg::edn_rsp_t ast_edn_edn_rsp;
 
   // alerts interface
-  ast_pkg::ast_alert_rsp_t alert_i;
-  ast_pkg::ast_alert_req_t alert_o;
+  ast_pkg::ast_alert_rsp_t ast_alert_rsp;
+  ast_pkg::ast_alert_req_t ast_alert_req;
 
-  // Switch these to prim_mux cells
-  logic core_clk_val;
-  assign ast_base_pwr.core_clk_val = core_clk_val ? pwrmgr_pkg::DiffValid :
-                                                    pwrmgr_pkg::DiffInvalid;
-  logic slow_clk_val;
-  assign ast_base_pwr.slow_clk_val = slow_clk_val ? pwrmgr_pkg::DiffValid :
-                                                    pwrmgr_pkg::DiffInvalid;
-  logic io_clk_val;
-  assign ast_base_pwr.io_clk_val   = io_clk_val   ? pwrmgr_pkg::DiffValid :
-                                                    pwrmgr_pkg::DiffInvalid;
-  logic usb_clk_val;
-  assign ast_base_pwr.usb_clk_val  = usb_clk_val  ? pwrmgr_pkg::DiffValid :
-                                                    pwrmgr_pkg::DiffInvalid;
+  // Flash connections
+  lc_ctrl_pkg::lc_tx_t flash_bist_enable;
+  logic flash_power_down_h;
+  logic flash_power_ready_h;
 
-// need to hookup later
-`ifndef VERILATOR
-`ifndef SYNTHESIS
-  awire adc_a0_a; // ADC A0 Analog Input
-  awire adc_a1_a; // ADC A1 Analog Input
-  assign adc_a0_a = 0.0;
-  assign adc_a1_a = 0.0;
-  awire pad2ast_t0_a; // T0 Analog Input
-  awire pad2ast_t1_a; // T1 Analog Input
-  assign pad2ast_t0_a = 0.0;
-  assign pad2ast_t1_a = 0.0;
-`else
-  wire adc_a0_a;  // ADC A0 Analog Input
-  wire adc_a1_a;  // ADC A1 Analog Input
-  assign adc_a0_a = 1'b0;
-  assign adc_a1_a = 1'b0;
-  wire pad2ast_t0_a; // T0 Analog Input
-  wire pad2ast_t1_a; // T1 Analog Input
-  assign pad2ast_t0_a = 1'b0;
-  assign pad2ast_t1_a = 1'b0;
-`endif
-`else
-  wire adc_a0_a;  // ADC A0 Analog Input
-  wire adc_a1_a;  // ADC A1 Analog Input
-  assign adc_a0_a = 1'b0;
-  assign adc_a1_a = 1'b0;
-  wire pad2ast_t0_a; // T0 Analog Input
-  wire pad2ast_t1_a; // T1 Analog Input
-  assign pad2ast_t0_a = 1'b0;
-  assign pad2ast_t1_a = 1'b0;
-`endif
+  // Life cycle clock bypass req/ack
+  lc_ctrl_pkg::lc_tx_t lc_ast_clk_byp_req;
+  lc_ctrl_pkg::lc_tx_t lc_ast_clk_byp_ack;
 
-  // TODO: Need to use lc_tx_t for flash_bist_enable after Dana's PR 
-  lc_ctrl_pkg::lc_tx_t flash_bist_en_o;
-  ast_pkg::ast_eflash_t ast_base_eflash;
-  assign ast_base_eflash.flash_bist_enable = (flash_bist_en_o == lc_ctrl_pkg::On);
+  // DFT connections
+  logic scan_rst_n;
+  logic scan_en;
+  lc_ctrl_pkg::lc_tx_t scanmode;
 
-  // Typedefs adjustment...
-  ast_pkg::ast_dif_t as_alert_o;
-  assign alert_o.alerts_p[sensor_ctrl_reg_pkg::AsSel] = as_alert_o.p;
-  assign alert_o.alerts_n[sensor_ctrl_reg_pkg::AsSel] = as_alert_o.n;
+  // Alert connections
+  import sensor_ctrl_reg_pkg::AsSel;
+  import sensor_ctrl_reg_pkg::CgSel;
+  import sensor_ctrl_reg_pkg::GdSel;
+  import sensor_ctrl_reg_pkg::TsHiSel;
+  import sensor_ctrl_reg_pkg::TsLoSel;
+  import sensor_ctrl_reg_pkg::LsSel;
+  import sensor_ctrl_reg_pkg::OtSel;
 
-  ast_pkg::ast_dif_t cg_alert_o;
-  assign alert_o.alerts_p[sensor_ctrl_reg_pkg::CgSel] = cg_alert_o.p;
-  assign alert_o.alerts_n[sensor_ctrl_reg_pkg::CgSel] = cg_alert_o.n;
-
-  ast_pkg::ast_dif_t gd_alert_o;
-  assign alert_o.alerts_p[sensor_ctrl_reg_pkg::GdSel] = gd_alert_o.p;
-  assign alert_o.alerts_n[sensor_ctrl_reg_pkg::GdSel] = gd_alert_o.n;
-
-  ast_pkg::ast_dif_t ts_alert_hi_o;
-  assign alert_o.alerts_p[sensor_ctrl_reg_pkg::TsHiSel] = ts_alert_hi_o.p;
-  assign alert_o.alerts_n[sensor_ctrl_reg_pkg::TsHiSel] = ts_alert_hi_o.n;
-
-  ast_pkg::ast_dif_t ts_alert_lo_o;
-  assign alert_o.alerts_p[sensor_ctrl_reg_pkg::TsLoSel] = ts_alert_lo_o.p;
-  assign alert_o.alerts_n[sensor_ctrl_reg_pkg::TsLoSel] = ts_alert_lo_o.n;
-
-  ast_pkg::ast_dif_t ls_alert_o;
-  assign alert_o.alerts_p[sensor_ctrl_reg_pkg::LsSel] = ls_alert_o.p;
-  assign alert_o.alerts_n[sensor_ctrl_reg_pkg::LsSel] = ls_alert_o.n;
-
-  ast_pkg::ast_dif_t ot_alert_o;
-  assign alert_o.alerts_p[sensor_ctrl_reg_pkg::OtSel] = ot_alert_o.p;
-  assign alert_o.alerts_n[sensor_ctrl_reg_pkg::OtSel] = ot_alert_o.n;
-
+  // reset domain connections
+  import rstmgr_pkg::DomainAonSel;
+  import rstmgr_pkg::Domain0Sel;
 
   ast #(
-    .EntropyStreams ( EntropyStreams ),    // Parameter moved to ast_pkg.sv
-    .AdcChannels ( AdcChannels ),          // Parameter moved to ast_pkg.sv
-    .AdcDataWidth ( AdcDataWidth ),        // Parameter moved to ast_pkg.sv
-    .UsbCalibWidth ( UsbCalibWidth ),      // Parameter moved to ast_pkg.sv
-    .Ast2PadOutWidth ( Ast2PadOutWidth ),  // Parameter moved to ast_pkg.sv
-    .Pad2AstInWidth ( Pad2AstInWidth )     // Parameter moved to ast_pkg.sv
+    .EntropyStreams(top_pkg::ENTROPY_STREAM),
+    .AdcChannels(top_pkg::ADC_CHANNELS),
+    .AdcDataWidth(top_pkg::ADC_DATAW),
+    .UsbCalibWidth(ast_pkg::UsbCalibWidth),
+    .Ast2PadOutWidth(ast_pkg::Ast2PadOutWidth),
+    .Pad2AstInWidth(ast_pkg::Pad2AstInWidth)
   ) u_ast (
     // tlul
-    .tl_i ( base_ast_bus ),
-    .tl_o ( ast_base_bus ),
+    .tl_i                  ( base_ast_bus ),
+    .tl_o                  ( ast_base_bus ),
     // buffered clocks & resets
-    .clk_ast_adc_i ( 1'b0 ),                        // TODO: Connect
-    .rst_ast_adc_ni ( 1'b0 ),                       // TODO: Coonect
-    .clk_ast_alert_i ( clks_ast.clk_ast_sensor_ctrl_io_div4_secure ),
-    // TODO: Which reset domain? See GH issue #5022
-    .rst_ast_alert_ni ( rsts_ast.rst_ast_sensor_ctrl_sys_io_div4_n[0] ),
-    .clk_ast_es_i ( 1'b0 ),                         // TODO: Connect
-    .rst_ast_es_ni ( 1'b0 ),                        // TODO: Connect
-    .clk_ast_rng_i ( 1'b0 ),                        // TODO: Connect
-    .rst_ast_rng_ni ( 1'b0 ),                       // TODO: Connect
-    .clk_ast_tlul_i ( clks_ast.clk_ast_sensor_ctrl_io_div4_secure ),
-    // TODO: Which reset domain? See GH issue #5022
-    .rst_ast_tlul_ni ( rsts_ast.rst_ast_sensor_ctrl_sys_io_div4_n[0] ),
-    .clk_ast_usb_i ( clks_ast.clk_ast_usbdev_usb_peri ),
-    // TODO: which reset domain? See GH issue #5022  
-    .rst_ast_usb_ni ( rsts_ast.rst_ast_usbdev_usb_n[0] ),
-    .clk_ast_ext_i ( clk ),
-    .por_ni ( rst_n ),
+    // Reset domain connection is manual at the moment
+    .clk_ast_adc_i         ( 1'b0 ),
+    .rst_ast_adc_ni        ( 1'b0 ),
+    .clk_ast_alert_i       ( clks_ast.clk_ast_sensor_ctrl_aon_io_div4_secure ),
+    .rst_ast_alert_ni      ( rsts_ast.rst_ast_sensor_ctrl_aon_sys_io_div4_n[DomainAonSel] ),
+    .clk_ast_es_i          ( clks_ast.clk_ast_edn0_main_secure ),
+    .rst_ast_es_ni         ( rsts_ast.rst_ast_edn0_sys_n[Domain0Sel] ),
+    .clk_ast_rng_i         ( clks_ast.clk_ast_entropy_src_main_secure ),
+    .rst_ast_rng_ni        ( rsts_ast.rst_ast_entropy_src_sys_n[Domain0Sel] ),
+    .clk_ast_tlul_i        ( clks_ast.clk_ast_sensor_ctrl_aon_io_div4_secure ),
+    .rst_ast_tlul_ni       ( rsts_ast.rst_ast_sensor_ctrl_aon_sys_io_div4_n[DomainAonSel] ),
+    .clk_ast_usb_i         ( clks_ast.clk_ast_usbdev_usb_peri ),
+    .rst_ast_usb_ni        ( rsts_ast.rst_ast_usbdev_usb_n[Domain0Sel] ),
+    .clk_ast_ext_i         ( clk ),
+    .por_ni                ( rst_n ),
     // pok test for FPGA
-    .vcc_supp_i ( 1'b1 ),     // VCC Supply Test for FPGA
-    .vcaon_supp_i ( 1'b1 ),   // AON Supply Test for FPGA
-    .vcmain_supp_i ( 1'b1 ),  // MAIN Supply Test for FPGA
-    .vioa_supp_i ( 1'b1 ),    // IO Rails Supply Test for FPGA
-    .viob_supp_i ( 1'b1 ),    // IO Rails Supply Test for FPGA
+    .vcc_supp_i            ( 1'b1 ),
+    .vcaon_supp_i          ( 1'b1 ),
+    .vcmain_supp_i         ( 1'b1 ),
+    .vioa_supp_i           ( 1'b1 ),
+    .viob_supp_i           ( 1'b1 ),
     // pok
-    .vcaon_pok_o ( ast_base_rst.aon_pok ),
-    .vcmain_pok_o ( ast_base_pwr.main_pok ),
-    .vioa_pok_o ( status_o.io_pok[0] ),
-    .viob_pok_o ( status_o.io_pok[1] ),
+    .vcaon_pok_o           ( ast_base_rst.aon_pok ),
+    .vcmain_pok_o          ( ast_base_pwr.main_pok ),
+    .vioa_pok_o            ( ast_status.io_pok[0] ),
+    .viob_pok_o            ( ast_status.io_pok[1] ),
     // main regulator
-    .main_iso_en_i ( base_ast_pwr.pwr_clamp ),
-    .main_pd_ni ( base_ast_pwr.main_pd_n ),
+    .main_iso_en_i         ( base_ast_pwr.pwr_clamp ),
+    .main_pd_ni            ( base_ast_pwr.main_pd_n ),
     // pdm control (flash)/otp
-    .flash_power_down_h_o ( ast_base_eflash.flash_power_down_h ),
-    .flash_power_ready_h_o ( ast_base_eflash.flash_power_ready_h ),
-    .otp_power_seq_i ( otp_ctrl_otp_ast_pwr_seq ),          //TODO: Connect
-    .otp_power_seq_h_o ( otp_ctrl_otp_ast_pwr_seq_h ),      //TODO: Connect
+    .flash_power_down_h_o  ( flash_power_down_h ),
+    .flash_power_ready_h_o ( flash_power_ready_h ),
+    .otp_power_seq_i       ( otp_ctrl_otp_ast_pwr_seq ),
+    .otp_power_seq_h_o     ( otp_ctrl_otp_ast_pwr_seq_h ),
     // system source clock
-    .clk_src_sys_en_i ( base_ast_pwr.core_clk_en ),
-    .clk_src_sys_jen_i ( 1'b0 ),           // need to add function in clkmgr
-    .clk_src_sys_o ( ast_base_clks.clk_sys  ),
-    .clk_src_sys_val_o ( core_clk_val ),
+    .clk_src_sys_en_i      ( base_ast_pwr.core_clk_en ),
+    // need to add function in clkmgr
+    .clk_src_sys_jen_i     ( 1'b0 ),
+    .clk_src_sys_o         ( ast_base_clks.clk_sys  ),
+    .clk_src_sys_val_o     ( ast_base_pwr.core_clk_val ),
     // aon source clock
-    .clk_src_aon_o ( ast_base_clks.clk_aon ),
-    .clk_src_aon_val_o ( slow_clk_val ),
+    .clk_src_aon_o         ( ast_base_clks.clk_aon ),
+    .clk_src_aon_val_o     ( ast_base_pwr.slow_clk_val ),
     // io source clock
-    .clk_src_io_en_i ( base_ast_pwr.io_clk_en ),
-    .clk_src_io_o ( ast_base_clks.clk_io ),
-    .clk_src_io_val_o ( io_clk_val ),
+    .clk_src_io_en_i       ( base_ast_pwr.io_clk_en ),
+    .clk_src_io_o          ( ast_base_clks.clk_io ),
+    .clk_src_io_val_o      ( ast_base_pwr.io_clk_val ),
     // usb source clock
-    .usb_ref_pulse_i ( usb_ref_pulse ),
-    .usb_ref_val_i ( usb_ref_val ),
-    .clk_src_usb_en_i ( base_ast_pwr.usb_clk_en ),
-    .clk_src_usb_o ( ast_base_clks.clk_usb ),
-    .clk_src_usb_val_o ( usb_clk_val ),
-    .usb_io_pu_cal_o ( ),                  // USB IO Pull-up Calibration Setting
+    .usb_ref_pulse_i       ( usb_ref_pulse ),
+    .usb_ref_val_i         ( usb_ref_val ),
+    .clk_src_usb_en_i      ( base_ast_pwr.usb_clk_en ),
+    .clk_src_usb_o         ( ast_base_clks.clk_usb ),
+    .clk_src_usb_val_o     ( ast_base_pwr.usb_clk_val ),
+    // USB IO Pull-up Calibration Setting
+    .usb_io_pu_cal_o       ( ),
     // adc
-    .adc_pd_i ( adc_i.pd ),
-    .adc_a0_ai ( adc_a0_a ),
-    .adc_a1_ai ( adc_a1_a ),
-    .adc_chnsel_i ( adc_i.channel_sel ),
-    .adc_d_o ( adc_o.data ),
-    .adc_d_val_o ( adc_o.data_valid ),
+    // TODO: Connect to do adc_ctrl when instantiated
+    .adc_pd_i              ( '0 ),
+    .adc_a0_ai             ( '0 ),
+    .adc_a1_ai             ( '0 ),
+    .adc_chnsel_i          ( '0 ),
+    .adc_d_o               (  ),
+    .adc_d_val_o           (  ),
     // rng
-    .rng_en_i ( es_i.rng_enable ),
-    .rng_val_o ( es_o.rng_valid ),
-    .rng_b_o ( es_o.rng_b ),
+    .rng_en_i              ( es_rng_req.rng_enable ),
+    .rng_val_o             ( es_rng_rsp.rng_valid ),
+    .rng_b_o               ( es_rng_rsp.rng_b ),
     // entropy
-    .entropy_rsp_i ( '{edn_ack: 1'b0, edn_fips: 1'b1,  edn_bus: '0} ),
-    .entropy_req_o ( ),                                     //TODO: Connect
+    .entropy_rsp_i         ( ast_edn_edn_rsp ),
+    .entropy_req_o         ( ast_edn_edn_req ),
     // alerts
-    .as_alert_trig_i ( '{ p: 1'b0, n: 1'b1 } ),             //TODO: Connect
-    .as_alert_ack_i ( '{ p: 1'b0, n: 1'b1 } ),              //TODO: Connect
-    .as_alert_o ( as_alert_o ),
-    .cg_alert_trig_i ( '{ p: 1'b0, n: 1'b1 } ),             //TODO: Connect
-    .cg_alert_ack_i ( '{ p: 1'b0, n: 1'b1 } ),              //TODO: Connect
-    .cg_alert_o ( cg_alert_o ),
-    .gd_alert_trig_i ( '{ p: 1'b0, n: 1'b1 } ),             //TODO: Connect
-    .gd_alert_ack_i ( '{ p: 1'b0, n: 1'b1 } ),              //TODO: Connect
-    .gd_alert_o ( gd_alert_o ),
-    .ts_alert_hi_trig_i ( '{ p: 1'b0, n: 1'b1 } ),          //TODO: Connect
-    .ts_alert_hi_ack_i ( '{ p: 1'b0, n: 1'b1 } ),           //TODO: Connect
-    .ts_alert_hi_o ( ts_alert_hi_o ),
-    .ts_alert_lo_trig_i ( '{ p: 1'b0, n: 1'b1 } ),          //TODO: Connect
-    .ts_alert_lo_ack_i ( '{ p: 1'b0, n: 1'b1 } ),           //TODO: Connect
-    .ts_alert_lo_o ( ts_alert_lo_o ),
-    .ls_alert_trig_i ( '{ p: 1'b0, n: 1'b1 } ),             //TODO: Connect
-    .ls_alert_ack_i ( '{ p: 1'b0, n: 1'b1 } ),              //TODO: Connect
-    .ls_alert_o ( ls_alert_o ),
-    .ot_alert_trig_i ( '{ p: 1'b0, n: 1'b1 } ),             //TODO: Connect
-    .ot_alert_ack_i ( '{ p: 1'b0, n: 1'b1 } ),              //TODO: Connect
-    .ot_alert_o ( ot_alert_o ),
+    .as_alert_trig_i       ( ast_alert_rsp.alerts_trig[AsSel]    ),
+    .as_alert_ack_i        ( ast_alert_rsp.alerts_ack[AsSel]     ),
+    .as_alert_o            ( ast_alert_req.alerts[AsSel]         ),
+    .cg_alert_trig_i       ( ast_alert_rsp.alerts_trig[CgSel]    ),
+    .cg_alert_ack_i        ( ast_alert_rsp.alerts_ack[CgSel]     ),
+    .cg_alert_o            ( ast_alert_req.alerts[CgSel]         ),
+    .gd_alert_trig_i       ( ast_alert_rsp.alerts_trig[GdSel]    ),
+    .gd_alert_ack_i        ( ast_alert_rsp.alerts_ack[GdSel]     ),
+    .gd_alert_o            ( ast_alert_req.alerts[GdSel]         ),
+    .ts_alert_hi_trig_i    ( ast_alert_rsp.alerts_trig[TsHiSel]  ),
+    .ts_alert_hi_ack_i     ( ast_alert_rsp.alerts_ack[TsHiSel]   ),
+    .ts_alert_hi_o         ( ast_alert_req.alerts[TsHiSel]       ),
+    .ts_alert_lo_trig_i    ( ast_alert_rsp.alerts_trig[TsLoSel]  ),
+    .ts_alert_lo_ack_i     ( ast_alert_rsp.alerts_ack[TsLoSel]   ),
+    .ts_alert_lo_o         ( ast_alert_req.alerts[TsLoSel]       ),
+    .ls_alert_trig_i       ( ast_alert_rsp.alerts_trig[LsSel]    ),
+    .ls_alert_ack_i        ( ast_alert_rsp.alerts_ack[LsSel]     ),
+    .ls_alert_o            ( ast_alert_req.alerts[LsSel]         ),
+    .ot_alert_trig_i       ( ast_alert_rsp.alerts_trig[OtSel]    ),
+    .ot_alert_ack_i        ( ast_alert_rsp.alerts_ack[OtSel]     ),
+    .ot_alert_o            ( ast_alert_req.alerts[OtSel]         ),
     // dft
-    .dft_strap_test_i ( '{valid: 1'b0, straps: 2'b00} ),    //TODO: Connect
-    .lc_dft_en_i ( lc_ctrl_pkg::On ),                       //TODO: Connect
+    .dft_strap_test_i      ( '{valid: 1'b0, straps: 2'b00} ),
+    .lc_dft_en_i           ( lc_ctrl_pkg::Off ),
     // pad mux related
-    .padmux2ast_i ( '0 ),              //TODO: Connect to pinmux
-    .ast2padmux_o ( ),                 //TODO: Connect to pinmux
-    .pad2ast_t0_ai ( pad2ast_t0_a ),   //TODO: Connect to PAD
-    .pad2ast_t1_ai ( pad2ast_t1_a  ),  //TODO: Connect tp PAD
-    .ast2pad_t0_ao ( ),                //TODO: Connect to PAD
-    .ast2pad_t1_ao ( ),                //TODO: Connect tp PAD
-    //
-    .lc_clk_byp_req_i ( lc_ctrl_pkg::Off ),                 //TODO: Connect
-    .lc_clk_byp_ack_o ( ),                                  //TODO: Connect
-    .flash_bist_en_o ( flash_bist_en_o ),                   //TODO: Connect
-    //
-    .dpram_rmf_o ( ),  //TODO: Connect to memories
-    .dpram_rml_o ( ),  //TODO: Connect to memories
-    .spram_rm_o ( ),   //TODO: Connect to memories
-    .sprgf_rm_o ( ),   //TODO: Connect to memories
-    .sprom_rm_o ( ),   //TODO: Connect to memories
+    //TODO: Connect to pinmux
+    .padmux2ast_i          ( '0 ),
+    .ast2padmux_o          ( ),
+    //TODO: Connect to PAD
+    .pad2ast_t0_ai         ( '0 ),
+    .pad2ast_t1_ai         ( '0 ),
+    .ast2pad_t0_ao         ( ),
+    .ast2pad_t1_ao         ( ),
+    .lc_clk_byp_req_i      ( lc_ast_clk_byp_req ),
+    .lc_clk_byp_ack_o      ( lc_ast_clk_byp_ack ),
+    .flash_bist_en_o       ( flash_bist_enable  ),
+    //TODO: Connect to memories
+    .dpram_rmf_o           ( ),
+    .dpram_rml_o           ( ),
+    .spram_rm_o            ( ),
+    .sprgf_rm_o            ( ),
+    .sprom_rm_o            ( ),
     // scan
-    .dft_scan_md_o ( ),     //TODO: Connect rstmgr
-    .scan_shift_en_o ( ),   //TODO: Connect ???
-    .scan_reset_no ( )      //TODO: Connect rstmgr
+    .dft_scan_md_o         ( scanmode ),
+    .scan_shift_en_o       ( scan_en ),
+    .scan_reset_no         ( scan_rst_n )
   );
 
 
@@ -524,24 +421,27 @@
     .rsts_ast_o           ( rsts_ast                   ),
     .pwrmgr_ast_req_o     ( base_ast_pwr               ),
     .pwrmgr_ast_rsp_i     ( ast_base_pwr               ),
-    .sensor_ctrl_ast_alert_req_i  ( ast_base_alerts            ),
-    .sensor_ctrl_ast_alert_rsp_o  ( base_ast_alerts            ),
-    .sensor_ctrl_ast_status_i     ( ast_base_status            ),
+    .sensor_ctrl_ast_alert_req_i  ( ast_alert_req              ),
+    .sensor_ctrl_ast_alert_rsp_o  ( ast_alert_rsp              ),
+    .sensor_ctrl_ast_status_i     ( ast_status                 ),
     .usbdev_usb_ref_val_o         ( usb_ref_pulse              ),
     .usbdev_usb_ref_pulse_o       ( usb_ref_val                ),
     .ast_tl_req_o                 ( base_ast_bus               ),
     .ast_tl_rsp_i                 ( ast_base_bus               ),
+    .ast_edn_edn_req_i            ( ast_edn_edn_req            ),
+    .ast_edn_edn_rsp_o            ( ast_edn_edn_rsp            ),
     .otp_ctrl_otp_ast_pwr_seq_o   ( otp_ctrl_otp_ast_pwr_seq   ),
     .otp_ctrl_otp_ast_pwr_seq_h_i ( otp_ctrl_otp_ast_pwr_seq_h ),
-    .flash_bist_enable_i          ( ast_base_eflash.flash_bist_enable   ),
-    .flash_power_down_h_i         ( ast_base_eflash.flash_power_down_h  ),
-    .flash_power_ready_h_i        ( ast_base_eflash.flash_power_ready_h ),
-    .ast_edn_edn_req_i            ( '0                         ),
-    .ast_edn_edn_rsp_o            (                            ),
+    .flash_bist_enable_i          ( flash_bist_enable          ),
+    .flash_power_down_h_i         ( flash_power_down_h         ),
+    .flash_power_ready_h_i        ( flash_power_ready_h        ),
+    .es_rng_req_o                 ( es_rng_req                 ),
+    .es_rng_rsp_i                 ( es_rng_rsp                 ),
+    .lc_clk_byp_req_o             ( lc_ast_clk_byp_req         ),
+    .lc_clk_byp_ack_i             ( lc_ast_clk_byp_ack         ),
     // TODO: connect these
-    .flash_test_mode_a_i          ('0),
-    .flash_test_voltage_h_i       ('0),
-
+    .flash_test_mode_a_i          ('0                          ),
+    .flash_test_voltage_h_i       ('0                          ),
     // JTAG
     .jtag_tck_i      ( jtag_tck      ),
     .jtag_tms_i      ( jtag_tms      ),
@@ -564,9 +464,10 @@
     .dio_attr_o      ( dio_attr      ),
 
     // DFT signals
-    .scan_rst_ni     ( 1'b1          ),
-    .scan_en_i       ( 1'b0          ),
-    .scanmode_i      ( 1'b0          )
+    .scan_rst_ni     ( scan_rst_n                  ),
+    .scan_en_i       ( scan_en                     ),
+    // TODO: Update scanmode to be a multi-bit connection inside the design
+    .scanmode_i      ( scanmode == lc_ctrl_pkg::On )
   );
 
 endmodule : top_earlgrey_asic
diff --git a/hw/top_earlgrey/rtl/top_earlgrey_nexysvideo.sv b/hw/top_earlgrey/rtl/top_earlgrey_nexysvideo.sv
index 37e90c7..a7809bc 100644
--- a/hw/top_earlgrey/rtl/top_earlgrey_nexysvideo.sv
+++ b/hw/top_earlgrey/rtl/top_earlgrey_nexysvideo.sv
@@ -360,24 +360,30 @@
   // Top-level design //
   //////////////////////
   pwrmgr_pkg::pwr_ast_rsp_t ast_base_pwr;
-  ast_wrapper_pkg::ast_rst_t ast_base_rst;
-  ast_wrapper_pkg::ast_alert_req_t ast_base_alerts;
-  ast_wrapper_pkg::ast_status_t ast_base_status;
+  ast_pkg::ast_rst_t ast_base_rst;
+  ast_pkg::ast_alert_req_t ast_base_alerts;
+  ast_pkg::ast_status_t ast_base_status;
 
-  assign ast_base_pwr.slow_clk_val = pwrmgr_pkg::DiffValid;
-  assign ast_base_pwr.core_clk_val = pwrmgr_pkg::DiffValid;
-  assign ast_base_pwr.io_clk_val   = pwrmgr_pkg::DiffValid;
-  assign ast_base_pwr.usb_clk_val  = pwrmgr_pkg::DiffValid;
+  assign ast_base_pwr.slow_clk_val = 1'b1;
+  assign ast_base_pwr.core_clk_val = 1'b1;
+  assign ast_base_pwr.io_clk_val   = 1'b1;
+  assign ast_base_pwr.usb_clk_val  = 1'b1;
   assign ast_base_pwr.main_pok     = 1'b1;
 
-  assign ast_base_alerts.alerts_p  = '0;
-  assign ast_base_alerts.alerts_n  = {ast_wrapper_pkg::NumAlerts{1'b1}};
-  assign ast_base_status.io_pok    = {ast_wrapper_pkg::NumIoRails{1'b1}};
+  ast_pkg::ast_dif_t silent_alert = '{
+                                       p: 1'b0,
+                                       n: 1'b1
+                                     };
+
+  assign ast_base_alerts.alerts = {ast_pkg::NumAlerts{silent_alert}};
+  assign ast_base_status.io_pok = {ast_pkg::NumIoRails{1'b1}};
 
   // the rst_ni pin only goes to AST
   // the rest of the logic generates reset based on the 'pok' signal.
   // for verilator purposes, make these two the same.
   assign ast_base_rst.aon_pok      = rst_n;
+  lc_ctrl_pkg::lc_tx_t lc_clk_bypass;
+
   top_earlgrey #(
     .AesMasking(1'b0),
     .AesSBoxImpl(aes_pkg::SBoxImplLut),
@@ -389,14 +395,16 @@
     .BootRomInitFile(BootRomInitFile)
   ) top_earlgrey (
     // Clocks, resets
-    .rst_ni          ( rst_n         ),
-    .clk_main_i      ( clk_main      ),
-    .clk_io_i        ( clk_main      ),
-    .clk_usb_i       ( clk_usb_48mhz ),
-    .clk_aon_i       ( clk_main      ),
-    .rstmgr_ast_i             ( ast_base_rst    ),
-    .pwrmgr_ast_req_o         (                 ),
-    .pwrmgr_ast_rsp_i         ( ast_base_pwr    ),
+    .rst_ni                       ( rst_n           ),
+    .clk_main_i                   ( clk_main        ),
+    .clk_io_i                     ( clk_main        ),
+    .clk_usb_i                    ( clk_usb_48mhz   ),
+    .clk_aon_i                    ( clk_main        ),
+    .clks_ast_o                   (                 ),
+    .rstmgr_ast_i                 ( ast_base_rst    ),
+    .rsts_ast_o                   (                 ),
+    .pwrmgr_ast_req_o             (                 ),
+    .pwrmgr_ast_rsp_i             ( ast_base_pwr    ),
     .sensor_ctrl_ast_alert_req_i  ( ast_base_alerts ),
     .sensor_ctrl_ast_alert_rsp_o  (                 ),
     .sensor_ctrl_ast_status_i     ( ast_base_status ),
@@ -404,15 +412,21 @@
     .usbdev_usb_ref_pulse_o       (                 ),
     .ast_tl_req_o                 (                 ),
     .ast_tl_rsp_i                 ( '0              ),
+    .ast_edn_edn_req_i            ( '0              ),
+    .ast_edn_edn_rsp_o            (                 ),
     .otp_ctrl_otp_ast_pwr_seq_o   (                 ),
     .otp_ctrl_otp_ast_pwr_seq_h_i ( '0              ),
     .flash_bist_enable_i          ( 1'b0            ),
     .flash_power_down_h_i         ( 1'b0            ),
     .flash_power_ready_h_i        ( 1'b1            ),
-    .flash_test_mode_a_i          ('0),
-    .flash_test_voltage_h_i       ('0),
-    .clks_ast_o                   ( ),
-    .rsts_ast_o                   ( ),
+    // Need to modle this logic at some point, otherwise entropy
+    // on verilator will hang
+    .es_rng_req_o                 (                 ),
+    .es_rng_rsp_i                 ( '0              ),
+    .lc_clk_byp_req_o             ( lc_clk_bypass   ),
+    .lc_clk_byp_ack_i             ( lc_clk_bypass   ),
+    .flash_test_mode_a_i          ('0               ),
+    .flash_test_voltage_h_i       ('0               ),
 
     // JTAG
     .jtag_tck_i      ( jtag_tck_buf  ),
diff --git a/hw/top_earlgrey/rtl/top_earlgrey_verilator.sv b/hw/top_earlgrey/rtl/top_earlgrey_verilator.sv
index f5754df..6035eb4 100644
--- a/hw/top_earlgrey/rtl/top_earlgrey_verilator.sv
+++ b/hw/top_earlgrey/rtl/top_earlgrey_verilator.sv
@@ -75,75 +75,88 @@
 
   // dummy ast connections
   pwrmgr_pkg::pwr_ast_rsp_t ast_base_pwr;
-  ast_wrapper_pkg::ast_rst_t ast_base_rst;
-  ast_wrapper_pkg::ast_alert_req_t ast_base_alerts;
-  ast_wrapper_pkg::ast_status_t ast_base_status;
+  ast_pkg::ast_rst_t ast_base_rst;
+  ast_pkg::ast_alert_req_t ast_base_alerts;
+  ast_pkg::ast_status_t ast_base_status;
 
-  assign ast_base_pwr.slow_clk_val = pwrmgr_pkg::DiffValid;
-  assign ast_base_pwr.core_clk_val = pwrmgr_pkg::DiffValid;
-  assign ast_base_pwr.io_clk_val   = pwrmgr_pkg::DiffValid;
-  assign ast_base_pwr.usb_clk_val  = pwrmgr_pkg::DiffValid;
+  assign ast_base_pwr.slow_clk_val = 1'b1;
+  assign ast_base_pwr.core_clk_val = 1'b1;
+  assign ast_base_pwr.io_clk_val   = 1'b1;
+  assign ast_base_pwr.usb_clk_val  = 1'b1;
   assign ast_base_pwr.main_pok     = 1'b1;
 
-  assign ast_base_alerts.alerts_p  = '0;
-  assign ast_base_alerts.alerts_n  = {ast_wrapper_pkg::NumAlerts{1'b1}};
-  assign ast_base_status.io_pok    = {ast_wrapper_pkg::NumIoRails{1'b1}};
+  ast_pkg::ast_dif_t silent_alert = '{
+                                       p: 1'b0,
+                                       n: 1'b1
+                                     };
+
+  assign ast_base_alerts.alerts = {ast_pkg::NumAlerts{silent_alert}};
+  assign ast_base_status.io_pok = {ast_pkg::NumIoRails{1'b1}};
 
   // the rst_ni pin only goes to AST
   // the rest of the logic generates reset based on the 'pok' signal.
   // for verilator purposes, make these two the same.
   assign ast_base_rst.aon_pok      = rst_ni;
+
+  lc_ctrl_pkg::lc_tx_t lc_clk_bypass;
   // Top-level design
   top_earlgrey top_earlgrey (
-    .rst_ni                     (rst_ni),
-    .clk_main_i                 (clk_i),
-    .clk_io_i                   (clk_i),
-    .clk_usb_i                  (clk_i),
-    .clk_aon_i                  (clk_i),
-    .rstmgr_ast_i           ( ast_base_rst    ),
-    .pwrmgr_ast_req_o   (                 ),
-    .pwrmgr_ast_rsp_i   ( ast_base_pwr    ),
-    .sensor_ctrl_ast_alert_req_i  ( ast_base_alerts ),
-    .sensor_ctrl_ast_alert_rsp_o  (                 ),
-    .sensor_ctrl_ast_status_i     ( ast_base_status ),
-    .usbdev_usb_ref_val_o         (                 ),
-    .usbdev_usb_ref_pulse_o       (                 ),
-    .ast_tl_req_o                 (                 ),
-    .ast_tl_rsp_i                 ( '0              ),
-    .otp_ctrl_otp_ast_pwr_seq_o   (                 ),
-    .otp_ctrl_otp_ast_pwr_seq_h_i ( '0              ),
-    .flash_bist_enable_i          ( 1'b0            ),
-    .flash_power_down_h_i         ( 1'b0            ),
-    .flash_power_ready_h_i        ( 1'b1            ),
+    .rst_ni                       (rst_ni            ),
+    .clk_main_i                   (clk_i             ),
+    .clk_io_i                     (clk_i             ),
+    .clk_usb_i                    (clk_i             ),
+    .clk_aon_i                    (clk_i             ),
+    .clks_ast_o                   (                  ),
+    .rstmgr_ast_i                 ( ast_base_rst     ),
+    .rsts_ast_o                   (                  ),
+    .pwrmgr_ast_req_o             (                  ),
+    .pwrmgr_ast_rsp_i             ( ast_base_pwr     ),
+    .sensor_ctrl_ast_alert_req_i  ( ast_base_alerts  ),
+    .sensor_ctrl_ast_alert_rsp_o  (                  ),
+    .sensor_ctrl_ast_status_i     ( ast_base_status  ),
+    .usbdev_usb_ref_val_o         (                  ),
+    .usbdev_usb_ref_pulse_o       (                  ),
+    .ast_tl_req_o                 (                  ),
+    .ast_tl_rsp_i                 ( '0               ),
+    .ast_edn_edn_req_i            ( '0               ),
+    .ast_edn_edn_rsp_o            (                  ),
+    .otp_ctrl_otp_ast_pwr_seq_o   (                  ),
+    .otp_ctrl_otp_ast_pwr_seq_h_i ( '0               ),
+    .flash_bist_enable_i          ( lc_ctrl_pkg::Off ),
+    .flash_power_down_h_i         ( 1'b0             ),
+    .flash_power_ready_h_i        ( 1'b1             ),
+    // Need to model this logic at some point, otherwise entropy
+    // on verilator will hang
+    .es_rng_req_o                 (                  ),
+    .es_rng_rsp_i                 ( '0               ),
+    .lc_clk_byp_req_o             ( lc_clk_bypass    ),
+    .lc_clk_byp_ack_i             ( lc_clk_bypass    ),
     .flash_test_mode_a_i          ('0),
     .flash_test_voltage_h_i       ('0),
-    .clks_ast_o                   ( ),
-    .rsts_ast_o                   ( ),
-
-    .jtag_tck_i                 (cio_jtag_tck),
-    .jtag_tms_i                 (cio_jtag_tms),
-    .jtag_trst_ni               (cio_jtag_trst_n),
-    .jtag_tdi_i                 (cio_jtag_tdi),
-    .jtag_tdo_o                 (cio_jtag_tdo),
+    .jtag_tck_i                   (cio_jtag_tck),
+    .jtag_tms_i                   (cio_jtag_tms),
+    .jtag_trst_ni                 (cio_jtag_trst_n),
+    .jtag_tdi_i                   (cio_jtag_tdi),
+    .jtag_tdo_o                   (cio_jtag_tdo),
 
     // Multiplexed I/O
-    .mio_in_i                   (cio_gpio_p2d),
-    .mio_out_o                  (cio_gpio_d2p),
-    .mio_oe_o                   (cio_gpio_en_d2p),
+    .mio_in_i                     (cio_gpio_p2d),
+    .mio_out_o                    (cio_gpio_d2p),
+    .mio_oe_o                     (cio_gpio_en_d2p),
 
     // Dedicated I/O
-    .dio_in_i                   (dio_in),
-    .dio_out_o                  (dio_out),
-    .dio_oe_o                   (dio_oe),
+    .dio_in_i                     (dio_in),
+    .dio_out_o                    (dio_out),
+    .dio_oe_o                     (dio_oe),
 
     // Pad attributes
-    .mio_attr_o                 ( ),
-    .dio_attr_o                 ( ),
+    .mio_attr_o                   ( ),
+    .dio_attr_o                   ( ),
 
     // DFT signals
-    .scan_rst_ni                (1'b1),
-    .scan_en_i                  (1'b0),
-    .scanmode_i                 (1'b0)
+    .scan_rst_ni                  (1'b1),
+    .scan_en_i                    (1'b0),
+    .scanmode_i                   (1'b0)
   );
 
   // GPIO DPI
diff --git a/hw/top_earlgrey/top_earlgrey.core b/hw/top_earlgrey/top_earlgrey.core
index 9f00dff..1a43534 100644
--- a/hw/top_earlgrey/top_earlgrey.core
+++ b/hw/top_earlgrey/top_earlgrey.core
@@ -46,7 +46,7 @@
       - lowrisc:ip:pwrmgr
       - lowrisc:systems:clkmgr
       - lowrisc:systems:sensor_ctrl
-      - lowrisc:systems:ast_wrapper_pkg
+      - lowrisc:systems:ast_pkg
       - lowrisc:tlul:headers
       - lowrisc:prim:all
     files:
diff --git a/hw/top_englishbreakfast/rtl/top_englishbreakfast_cw305.sv b/hw/top_englishbreakfast/rtl/top_englishbreakfast_cw305.sv
index eeb2011..c336081 100644
--- a/hw/top_englishbreakfast/rtl/top_englishbreakfast_cw305.sv
+++ b/hw/top_englishbreakfast/rtl/top_englishbreakfast_cw305.sv
@@ -218,19 +218,22 @@
   // Top-level design //
   //////////////////////
   pwrmgr_pkg::pwr_ast_rsp_t ast_base_pwr;
-  ast_wrapper_pkg::ast_rst_t ast_base_rst;
-  ast_wrapper_pkg::ast_alert_req_t ast_base_alerts;
-  ast_wrapper_pkg::ast_status_t ast_base_status;
+  ast_pkg::ast_rst_t ast_base_rst;
+  ast_pkg::ast_alert_req_t ast_base_alerts;
+  ast_pkg::ast_status_t ast_base_status;
 
-  assign ast_base_pwr.slow_clk_val = pwrmgr_pkg::DiffValid;
-  assign ast_base_pwr.core_clk_val = pwrmgr_pkg::DiffValid;
-  assign ast_base_pwr.io_clk_val   = pwrmgr_pkg::DiffValid;
-  assign ast_base_pwr.usb_clk_val  = pwrmgr_pkg::DiffValid;
+  assign ast_base_pwr.slow_clk_val = 1'b1;
+  assign ast_base_pwr.core_clk_val = 1'b1;
+  assign ast_base_pwr.io_clk_val   = 1'b1;
+  assign ast_base_pwr.usb_clk_val  = 1'b1;
   assign ast_base_pwr.main_pok     = 1'b1;
 
-  assign ast_base_alerts.alerts_p  = '0;
-  assign ast_base_alerts.alerts_n  = {ast_wrapper_pkg::NumAlerts{1'b1}};
-  assign ast_base_status.io_pok    = {ast_wrapper_pkg::NumIoRails{1'b1}};
+  ast_pkg::ast_dif_t silent_alert = '{
+                                       p: 1'b0,
+                                       n: 1'b1
+                                     };
+  assign ast_base_alerts.alerts = {ast_pkg::NumAlerts{silent_alert}};
+  assign ast_base_status.io_pok    = {ast_pkg::NumIoRails{1'b1}};
 
   // the rst_ni pin only goes to AST
   // the rest of the logic generates reset based on the 'pok' signal.
diff --git a/hw/top_englishbreakfast/rtl/top_englishbreakfast_verilator.sv b/hw/top_englishbreakfast/rtl/top_englishbreakfast_verilator.sv
index 2137a2e..7449de2 100644
--- a/hw/top_englishbreakfast/rtl/top_englishbreakfast_verilator.sv
+++ b/hw/top_englishbreakfast/rtl/top_englishbreakfast_verilator.sv
@@ -75,19 +75,22 @@
 
   // dummy ast connections
   pwrmgr_pkg::pwr_ast_rsp_t ast_base_pwr;
-  ast_wrapper_pkg::ast_rst_t ast_base_rst;
-  ast_wrapper_pkg::ast_alert_req_t ast_base_alerts;
-  ast_wrapper_pkg::ast_status_t ast_base_status;
+  ast_pkg::ast_rst_t ast_base_rst;
+  ast_pkg::ast_alert_req_t ast_base_alerts;
+  ast_pkg::ast_status_t ast_base_status;
 
-  assign ast_base_pwr.slow_clk_val = pwrmgr_pkg::DiffValid;
-  assign ast_base_pwr.core_clk_val = pwrmgr_pkg::DiffValid;
-  assign ast_base_pwr.io_clk_val   = pwrmgr_pkg::DiffValid;
-  assign ast_base_pwr.usb_clk_val  = pwrmgr_pkg::DiffValid;
+  assign ast_base_pwr.slow_clk_val = 1'b1;
+  assign ast_base_pwr.core_clk_val = 1'b1;
+  assign ast_base_pwr.io_clk_val   = 1'b1;
+  assign ast_base_pwr.usb_clk_val  = 1'b1;
   assign ast_base_pwr.main_pok     = 1'b1;
 
-  assign ast_base_alerts.alerts_p  = '0;
-  assign ast_base_alerts.alerts_n  = {ast_wrapper_pkg::NumAlerts{1'b1}};
-  assign ast_base_status.io_pok    = {ast_wrapper_pkg::NumIoRails{1'b1}};
+  ast_pkg::ast_dif_t silent_alert = '{
+                                       p: 1'b0,
+                                       n: 1'b1
+                                     };
+  assign ast_base_alerts.alerts = {ast_pkg::NumAlerts{silent_alert}};
+  assign ast_base_status.io_pok    = {ast_pkg::NumIoRails{1'b1}};
 
   // the rst_ni pin only goes to AST
   // the rest of the logic generates reset based on the 'pok' signal.
diff --git a/util/topgen-fusesoc.py b/util/topgen-fusesoc.py
index 607cecf..c864032 100644
--- a/util/topgen-fusesoc.py
+++ b/util/topgen-fusesoc.py
@@ -139,7 +139,7 @@
                         # Top
                         # ast and sensor_ctrl not auto-generated, re-used from top_earlgrey
                         'lowrisc:systems:sensor_ctrl',
-                        'lowrisc:systems:ast_wrapper_pkg',
+                        'lowrisc:systems:ast_pkg',
                     ],
                     'files': [
                         # IPs