[ast] Ast lint fixes and waiver file update

Signed-off-by: Michael Schaffner <msf@google.com>
diff --git a/hw/top_earlgrey/ip/ast/ast.core b/hw/top_earlgrey/ip/ast/ast.core
index 20fffb8..ef53966 100644
--- a/hw/top_earlgrey/ip/ast/ast.core
+++ b/hw/top_earlgrey/ip/ast/ast.core
@@ -99,6 +99,7 @@
     default_tool: verilator
     parameters:
       - SYNTHESIS=true
+      - AST_BYPASS_CLK=true
     tools:
       verilator:
         mode: lint-only
diff --git a/hw/top_earlgrey/ip/ast/lint/ast.waiver b/hw/top_earlgrey/ip/ast/lint/ast.waiver
index d2b4de2..6be3653 100644
--- a/hw/top_earlgrey/ip/ast/lint/ast.waiver
+++ b/hw/top_earlgrey/ip/ast/lint/ast.waiver
@@ -12,6 +12,14 @@
       -msg {Assignment to 'unused_analog_sigs' contained within `ifndef 'ANALOGSIM' block at} \
       -comment {This ifdef statement is used for assigning "unused" signals and is OK.}
 
+waive -rules IFDEF_CODE -location {ast.sv} \
+      -regexp {Assignment to 'clk_(sys|usb|aon|io)_ext' contained within `ifdef 'AST_BYPASS_CLK' block at} \
+      -comment {This ifdef statement is fine as it is part of the FPGA/Verilator clock bypass mechanism.}
+
+waive -rules IFDEF_CODE -location {aon_osc.sv io_osc.sv sys_osc.sv usb_osc.sv} \
+      -regexp {Assignment to '(sys|usb|aon|io)_clk_dly' contained within `else block at} \
+      -comment {This ifdef statement is fine as it is part of the FPGA/Verilator clock bypass mechanism.}
+
 waive -rules CLOCK_EDGE -location {aon_osc.sv io_osc.sv sys_osc.sv usb_osc.sv} \
       -msg {Falling edge of clock 'clk' used here, should use rising edge} \
       -comment {This negedge trigger is done on purpose.}
@@ -32,6 +40,10 @@
       -msg {'rst_val_n' is driven here, and used as an asynchronous reset} \
       -comment {This is reset generation logic, hence it needs to drive this reset signal.}
 
+waive -rules RESET_DRIVER -location {aon_clk.sv io_clk.sv sys_clk.sv usb_clk.sv} \
+      -regexp {'(aon|io|sys|usb)_clk_en' is driven here, and used as an asynchronous reset} \
+      -comment {This is reset generation logic, hence it needs to drive this reset signal.}
+
 waive -rules RESET_DRIVER -location {rng.sv} \
       -msg {'rst_n' is driven here, and used as an asynchronous reset at rng.sv} \
       -comment {This is reset generation logic, hence it needs to drive this reset signal.}
@@ -104,6 +116,10 @@
       -regexp {('rst_sys_clk_n'|'rst_usb_clk_n') is connected to ('sys_clk'|'usb_clk') port ('rst_sys_clk_ni'|'rst_usb_clk_ni'), and used as an asynchronous reset or set} \
       -comment {This is a valid reset connection.}
 
+waive -rules RESET_USE -location {aon_clk.sv io_clk.sv sys_clk.sv usb_clk.sv} \
+      -regexp {'(aon|io|sys|usb)_clk_en' is connected to '(aon|io|sys|usb)_osc' port '(aon|io|sys|usb)_en_i', and used as an asynchronous reset or set} \
+      -comment {This is reset / clock generation logic, hence special reset usage is allowed.}
+
 waive -rules {TRI_DRIVER} -location {ast.sv} \
       -regexp {'ast2pad_(t0|t1)_ao' is driven by a tristate driver} \
       -comment {This part models a tristate driver.}
diff --git a/hw/top_earlgrey/ip/ast/rtl/ast.sv b/hw/top_earlgrey/ip/ast/rtl/ast.sv
index 4507340..6fc8d28 100644
--- a/hw/top_earlgrey/ip/ast/rtl/ast.sv
+++ b/hw/top_earlgrey/ip/ast/rtl/ast.sv
@@ -9,12 +9,12 @@
 `include "prim_assert.sv"
 
 module ast #(
-  parameter int AdcChannels     = 2,
-  parameter int AdcDataWidth    = 10,
-  parameter int EntropyStreams  = 4,
-  parameter int UsbCalibWidth   = 20,
-  parameter int Ast2PadOutWidth = 9,
-  parameter int Pad2AstInWidth  = 6
+  parameter int unsigned AdcChannels     = 2,
+  parameter int unsigned AdcDataWidth    = 10,
+  parameter int unsigned EntropyStreams  = 4,
+  parameter int unsigned UsbCalibWidth   = 20,
+  parameter int unsigned Ast2PadOutWidth = 9,
+  parameter int unsigned Pad2AstInWidth  = 6
 ) (
   // tlul if
   input tlul_pkg::tl_h2d_t tl_i,              // TLUL H2D
@@ -183,6 +183,8 @@
 assign vcc_pok_h = vcc_pok;     // "Level Shifter"
 assign ast_pwst_h_o.vcc_pok = vcc_pok_h;
 
+// TODO: double check this.
+assign ast_pwst_o.vcc_pok = vcc_pok;
 
 ///////////////////////////////////////
 // VCAON POK (Always ON)